SZEDER Gábor <szeder.dev@xxxxxxxxx> writes: > In a while-at-it cleanup replacing a 'cd dir && <...> && cd ..' with a > subshell, commit 28391a80a9 (receive-pack: allow deletion of corrupt > refs, 2007-11-29) also moved the assignment of the $old_commit > variable to that subshell. This variable, however, is used outside of > that subshell as a parameter of check_push_result(), to check that a > ref still points to the commit where it is supposed to. With the > variable remaining unset outside the subshell check_push_result() > doesn't perform that check at all. Sigh/Blush. Thanks for finding an old screw-up. > > Use 'git -C <dir> cmd...', so we don't need to change directory, and > thus don't need the subshell either when setting $old_commit. > > Furthermore, change check_push_result() to require at least three > parameters (the repo, the oid, and at least one ref), so it will catch > similar issues earlier should they ever arise. > > Signed-off-by: SZEDER Gábor <szeder.dev@xxxxxxxxx> > --- > t/t5516-fetch-push.sh | 8 ++++---- > 1 file changed, 4 insertions(+), 4 deletions(-) > > diff --git a/t/t5516-fetch-push.sh b/t/t5516-fetch-push.sh > index 82239138d5..832b79ad40 100755 > --- a/t/t5516-fetch-push.sh > +++ b/t/t5516-fetch-push.sh > @@ -94,6 +94,9 @@ mk_child() { > } > > check_push_result () { > + test $# -ge 3 || > + error "bug in the test script: check_push_result requires at least 3 parameters" > + > repo_name="$1" > shift > > @@ -553,10 +556,7 @@ test_expect_success 'branch.*.pushremote config order is irrelevant' ' > test_expect_success 'push with dry-run' ' > > mk_test testrepo heads/master && > - ( > - cd testrepo && > - old_commit=$(git show-ref -s --verify refs/heads/master) > - ) && > + old_commit=$(git -C testrepo show-ref -s --verify refs/heads/master) && > git push --dry-run testrepo : && > check_push_result testrepo $old_commit heads/master > '