clone

a personal forge on plain git: static pages, stacked-diff reviews, signed local ci, repo sites and releases

main
forge / test / scenarios / release-tag.sh
release-tag.sh 2.1K
1# A release is for a tag that exists once the push lands: its Tag trailer2# names the ref's tag and its Source-Commit the tag's commit. The tag may3# come in the same push, but not go in it; latest is no tag for a release.4. "$(dirname "$0")/../lib.sh"5user dami6repo dami/greet7clone dami dami/greet "$T/w/d"8at "$T/w/d" commit "first"9ok push_as dami "$T/w/d" origin main10first=$(git -C "$T/w/d" rev-parse HEAD)11at "$T/w/d" commit "second"12ok push_as dami "$T/w/d" origin main13at "$T/w/d" git tag v114at "$T/w/d" git tag latest15mkdir "$T/f"16printf 'greet\n' >"$T/f/greet"17c=$(release_commit "$T/w/d" v1 "$T/f")1819fails_with 'release v1: no tag v1 here; push it with the release' push_as dami "$T/w/d" origin "$c:refs/releases/v1"20at "$T/w/d" git tag v221ok push_as dami "$T/w/d" origin v1 v222fails_with 'release v2: its Tag trailer is v1, not v2' push_as dami "$T/w/d" origin "$c:refs/releases/v2"23c2=$(R_TAG=v2 release_commit "$T/w/d" v1 "$T/f")24fails_with 'release v1: its Tag trailer is v2, not v1' push_as dami "$T/w/d" origin "$c2:refs/releases/v1"25c2=$(R_SRC=$first release_commit "$T/w/d" v1 "$T/f")26fails_with "release v1: its Source-Commit is $first, but tag v1 is $(git -C "$T/w/d" rev-parse v1)" push_as dami "$T/w/d" origin "$c2:refs/releases/v1"27c2=$(release_commit "$T/w/d" latest "$T/f")28fails_with "release latest: tags with releases use .*aren't latest" push_as dami "$T/w/d" origin latest "$c2:refs/releases/latest"29fails_with 'release v1: this push deletes tag v1' push_as dami "$T/w/d" origin :refs/tags/v1 "$c:refs/releases/v1"30missing "$FORGE_WWW/dami/greet/releases"3132# The tag moved since the release was made: it says so.33at "$T/w/d" git tag -f v1 "$first" >/dev/null34fails_with 'its Source-Commit is .*, but tag v1 is' push_as dami "$T/w/d" origin -f v1 "$c:refs/releases/v1"35# A new tag in the same push as its release.36at "$T/w/d" git tag v337rm "$T/f/SHA256SUMS.sig"38c3=$(release_commit "$T/w/d" v3 "$T/f")39ok push_as dami "$T/w/d" origin v3 "$c3:refs/releases/v3"40exists "$FORGE_WWW/dami/greet/releases/download/v3/greet"41exists "$FORGE_WWW/dami/greet/releases/download/latest/greet"