1# Releases hold binaries, so clones and fetches never see refs/releases2# (uploadpack.hideRefs), while pushes do, so they can be published again3# and deleted. Big blobs are stored without deltas (core.bigFileThreshold).4. "$(dirname "$0")/../lib.sh"5user dami6user ana7repo dami/greet8g=$FORGE_ROOT/dami/greet.git9eq "$(git --git-dir="$g" config --get-all uploadpack.hideRefs)" refs/releases10eq "$(git --git-dir="$g" config core.bigFileThreshold)" 16m11forge server init >/dev/null 2>&112eq "$(git --git-dir="$g" config --get-all uploadpack.hideRefs)" refs/releases13eq "$(git --git-dir="$g" config --get-all transfer.hideRefs)" refs/forge1415clone dami dami/greet "$T/w/d"16at "$T/w/d" commit "first"17at "$T/w/d" git tag v118ok push_as dami "$T/w/d" origin main19mkdir "$T/f"20printf 'greet\000\n' >"$T/f/greet"21export FORGE_USER=dami22ok at "$T/w/d" "$FORGE" release publish v1 "$T/f/greet"23git --git-dir="$g" rev-parse -q --verify refs/releases/v1 >/dev/null || fail "no release ref"2425ok fetch_ssh ana dami/greet26has "$T_LOG" 'refs/tags/v1'27lacks "$T_LOG" 'refs/releases'28ok git ls-remote "$g"29lacks "$T_LOG" 'refs/releases'30ok clone_ssh ana dami/greet "$T/w/a"31eq "$(git -C "$T/w/a" for-each-ref refs/releases/ | wc -l | tr -d ' ')" 032fails at "$T/w/a" git fetch -q origin refs/releases/v133# The release's blob never came along.34fails git -C "$T/w/a" cat-file -e "$(git --git-dir="$g" rev-parse refs/releases/v1:greet)"3536# Pushes see it: publish again (a forced update) and delete.37printf 'greet 2\n' >"$T/f/greet"38ok at "$T/w/d" "$FORGE" release publish v1 "$T/f/greet"39has "$FORGE_WWW/dami/greet/releases/download/v1/greet" 'greet 2'40ok at "$T/w/d" "$FORGE" release rm v141fails git --git-dir="$g" rev-parse -q --verify refs/releases/v1