1# ssh commands that name a private repo: readers use them as on any repo;2# for anyone else each says what it says about a repo that isn't there.3# ls marks private repos and lists the ones you may read.4. "$(dirname "$0")/../lib.sh"5user dami6user ana7user cat8repo --private dami/secret9repo dami/open10clone dami dami/secret "$T/w/dami"11at "$T/w/dami" commit "first"12ok push_as dami "$T/w/dami" origin main13at "$T/w/dami" git switch -q -c dami/topic14at "$T/w/dami" commit "topic"15ok push_as dami "$T/w/dami" origin dami/topic16tree=$(git -C "$T/w/dami" rev-parse 'HEAD^{tree}')17ok ssh_as dami readers dami/secret add ana1819# A reader: the review list comes from the review logs (no pages).20ok ssh_as ana reviews dami/secret21has "$T_LOG" '#1 +topic +dami/topic -> main'22ok ssh_as ana reviews dami/secret --tsv23has "$T_LOG" '^1 open dami/topic'24printf 'looks fine\n' | ssh_as ana comment dami/secret 1 >"$T_LOG" 2>&1 || fail "reader can't comment"25exists "$FORGE_ROOT/dami/secret.git/forge/comments/1/1"26has "$FORGE_ROOT/.forge/events.jsonl" '"type":"comment".*"private":true}$'27ok ssh_as ana approve dami/secret 128ok ssh_as ana approvals dami/secret "$tree"29has "$T_LOG" '^ana$'30ok ssh_as ana site-url dami/secret docs3132# Anyone else: the same words as for a missing repo, byte for byte.33for cmd in "reviews dami/secret" "reviews dami/secret --tsv" "comment dami/secret 1" "approve dami/secret 1" \34 "approvals dami/secret $tree" "land dami/secret 1" "site-url dami/secret docs" \35 "private dami/secret" "public dami/secret" "readers dami/secret" "readers dami/secret add cat"; do36 fails ssh_as cat "$cmd" </dev/null37 denied=$(output)38 aside dami/secret39 fails ssh_as cat "$cmd" </dev/null40 back dami/secret41 eq "$denied" "$(output)"42 eq "$denied" "forge: no repo dami/secret"43done44missing "$FORGE_ROOT/dami/secret.git/forge/comments/1/2"4546ok ssh_as dami ls47eq "$(output)" "open48secret (private)"49ok ssh_as ana ls50eq "$(output)" "dami/secret (private)"51ok ssh_as cat ls52eq "$(output)" ""5354# new --private over ssh.55ok ssh_as cat new --private notes "my notes"56has "$T_LOG" 'created cat/notes \(private\)'57missing "$FORGE_ROOT/cat/notes.git/git-daemon-export-ok"58has "$FORGE_ROOT/cat/notes.git/description" '^my notes$'59ok ssh_as cat new pub60exists "$FORGE_ROOT/cat/pub.git/git-daemon-export-ok"61ok ssh_as cat help62has "$T_LOG" 'readers <owner>/<repo>'