Skip to content

Commit dded8a2

Browse files
chore(release): 0.2.2 (#51)
Cuts the Unreleased section and repoints the Action examples at the new tag. This release is the one where pull request mirroring first works. The feature shipped in 0.2.1, but four defects made it inoperable in practice: the destination repository path was owner relative where every API wanted it qualified, Azure DevOps duplicated the project into paths that already carried it, concurrent repositories raced on shared state, and a pull request with no labels failed its own update. Two further fixes here, Docker Hub session tokens and config discovery, affect anyone running 0.2.1 today regardless of whether they mirror pull requests at all. Co-authored-by: Anmol Nagpal <ianmolnagpal@gmail.com>
1 parent ccaaaff commit dded8a2

2 files changed

Lines changed: 7 additions & 5 deletions

File tree

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99

10+
## [0.2.2] - 2026-08-19
11+
1012
### Fixed
1113
- `pull_requests.mirror_objects` could not work against GitHub, GitLab, or Bitbucket. The engine handed the destination side the rendered repository name, which is owner relative because the clone URL and repository creation prepend the owner themselves, while every destination pull request and comment endpoint interpolates that value as a fully qualified path: a GitHub destination asked for `/repos/widget/pulls` rather than `/repos/acme/widget/pulls` and every call answered 404. Azure DevOps failed the other way, duplicating the project into a path that already carried it, so listing pull requests 404d for every repository
1214
- Mirroring several repositories at once could abort the process. Pull request records were written into the shared git state from inside the engine's worker pool without the lock the engine uses for its own access, and two repositories finishing together is a concurrent map write, which Go turns into an unrecoverable crash. The state type now guards its own maps

README.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ Requires Go 1.23+ to build from source.
121121
Add SyncerD to your workflow:
122122

123123
```yaml
124-
- uses: clouddrove/syncerd@v0.2.1
124+
- uses: clouddrove/syncerd@v0.2.2
125125
with:
126126
config: syncerd.yaml
127127
once: "true"
@@ -139,7 +139,7 @@ For **AWS ECR**, add `aws-actions/configure-aws-credentials` before SyncerD and
139139
role-to-assume: arn:aws:iam::123456789012:role/syncerd
140140
aws-region: eu-west-1
141141
142-
- uses: clouddrove/syncerd@v0.2.1
142+
- uses: clouddrove/syncerd@v0.2.2
143143
with:
144144
config: syncerd.yaml
145145
```
@@ -157,7 +157,7 @@ steps:
157157
username: ${{ github.actor }}
158158
password: ${{ secrets.GITHUB_TOKEN }}
159159
160-
- uses: clouddrove/syncerd@v0.2.1
160+
- uses: clouddrove/syncerd@v0.2.2
161161
env:
162162
DOCKER_CONFIG: /github/workspace/.docker # same directory, path inside the container
163163
with:
@@ -181,7 +181,7 @@ steps:
181181
Since the default push mode deletes destination refs that are absent at the source, **run once with `dry-run: "true"` before trusting a new mirror config**:
182182
183183
```yaml
184-
- uses: clouddrove/syncerd@v0.2.1
184+
- uses: clouddrove/syncerd@v0.2.2
185185
with:
186186
command: git-sync
187187
config: syncerd.yaml
@@ -195,7 +195,7 @@ Since the default push mode deletes destination refs that are absent at the sour
195195
Once the dry run output looks right, drop `dry-run` (or set it to `"false"`) to let it write for real:
196196

197197
```yaml
198-
- uses: clouddrove/syncerd@v0.2.1
198+
- uses: clouddrove/syncerd@v0.2.2
199199
with:
200200
command: git-sync
201201
config: syncerd.yaml

0 commit comments

Comments
 (0)