Files
zeekayandHanzo Dev 9899b5f3b8 ci: sync tags too, not just main
cicd.yml builds a release on `tags: ['v*']`, and the sync only ever moved
refs/heads/main. Tags are created on GitHub, so they never arrived here, the
trigger never fired, and no semver image was ever built: the forge sat at
v1.26.24 while GitHub had v1.26.26. A version number that names no artifact is
worse than no tag at all, because it reads as a release.

Tags are immutable, so fast-forward-only means a tag we do not have is pushed,
and a tag we do have that points somewhere else is a rewritten release — which
is reported and refused, never silently adopted and never silently skipped.

Both sides are read from their own ref namespace. A draft that compared against
refs/tags/ was wrong in a way worth recording: `git fetch` auto-follows tags
pointing at fetched objects even when given an explicit refspec, so the GitHub
tags landed in refs/tags/ as a side effect, every new tag compared equal to the
copy just followed, and nothing was ever pushed — this fix silently undoing
itself. --no-tags plus an explicit namespace per side removes both that and any
dependence on what checkout leaves behind.

Verified against a pair of local repositories holding a shared tag, a rewritten
tag and a new one: unchanged is left alone, the rewrite is refused and reported,
the new tag is pushed.

Co-authored-by: Hanzo Dev <[email protected]>
2026-07-30 17:20:29 -07:00
..