1# A backup leaves .forge/private/store out, like .forge/store, since the2# release refs it is extracted from are in the backup; a restore extracts a3# private repo's releases into it again and links its downloads from there,4# and a public repo's from .forge/store.5. "$(dirname "$0")/../lib.sh"6user dami7repo dami/open8repo --private dami/secret9mkdir "$T/f"10printf 'tool\n' >"$T/f/tool"11export FORGE_USER=dami12for r in open secret; do13 clone dami "dami/$r" "$T/w/$r"14 at "$T/w/$r" commit "first $r"15 at "$T/w/$r" git tag v116 ok push_as dami "$T/w/$r" origin main17 ok at "$T/w/$r" "$FORGE" release publish v1 "$T/f/tool"18done19unset FORGE_USER20open=$(git --git-dir="$FORGE_ROOT/dami/open.git" rev-parse 'refs/releases/v1^{tree}')21secret=$(git --git-dir="$FORGE_ROOT/dami/secret.git" rev-parse 'refs/releases/v1^{tree}')22exists "$FORGE_ROOT/.forge/private/store/$secret/tool"2324ok forge backup --dry-run25st=$FORGE_ROOT/.forge/backup/stage26missing "$st/.forge/private"27missing "$st/.forge/store"28exists "$st/dami/secret.git/HEAD"2930r=$T/restored31ok restore_into "$r" --from "$st"32inode() { ls -i "$1" | awk '{ print $1 }'; }33dl=dami/secret/releases/download34ok cmp "$T/f/tool" "$r/.forge/private/store/$secret/tool"35eq "$(inode "$r/.forge/private/www/$dl/v1/tool")" "$(inode "$r/.forge/private/store/$secret/tool")"36eq "$(inode "$r/.forge/private/www/$dl/latest/tool")" "$(inode "$r/.forge/private/store/$secret/tool")"37missing "$r/.forge/store/$secret"38eq "$(ls -ld "$r/.forge/private" | cut -c1-10)" drwx------39eq "$(inode "$r/.forge/www/dami/open/releases/download/v1/tool")" "$(inode "$r/.forge/store/$open/tool")"40missing "$r/.forge/private/store/$open"