X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=t%2Ft5400-send-pack.sh;h=544771d8fa98ec70d84e5083c2bfc0ebdf45f9a1;hb=5bdd8d4a3062ac8f29ec511fecb85049f6ff3ecc;hp=4eaea8f3364343385227b38ac279a603f7ca025b;hpb=7c851733e4bc2b36bd9df63cab2fe11180242670;p=git.git diff --git a/t/t5400-send-pack.sh b/t/t5400-send-pack.sh index 4eaea8f33..544771d8f 100755 --- a/t/t5400-send-pack.sh +++ b/t/t5400-send-pack.sh @@ -13,9 +13,9 @@ test_expect_success setup ' test_tick && mkdir mozart mozart/is && echo "Commit #0" >mozart/is/pink && - git-update-index --add mozart/is/pink && - tree=$(git-write-tree) && - commit=$(echo "Commit #0" | git-commit-tree $tree) && + git update-index --add mozart/is/pink && + tree=$(git write-tree) && + commit=$(echo "Commit #0" | git commit-tree $tree) && zero=$commit && parent=$zero && i=0 && @@ -24,18 +24,18 @@ test_expect_success setup ' i=$(($i+1)) && test_tick && echo "Commit #$i" >mozart/is/pink && - git-update-index --add mozart/is/pink && - tree=$(git-write-tree) && - commit=$(echo "Commit #$i" | git-commit-tree $tree -p $parent) && - git-update-ref refs/tags/commit$i $commit && + git update-index --add mozart/is/pink && + tree=$(git write-tree) && + commit=$(echo "Commit #$i" | git commit-tree $tree -p $parent) && + git update-ref refs/tags/commit$i $commit && parent=$commit || return 1 done && - git-update-ref HEAD "$commit" && - git-clone ./. victim && + git update-ref HEAD "$commit" && + git clone ./. victim && cd victim && - git-log && + git log && cd .. && - git-update-ref HEAD "$zero" && + git update-ref HEAD "$zero" && parent=$zero && i=0 && while test $i -le $cnt @@ -43,15 +43,15 @@ test_expect_success setup ' i=$(($i+1)) && test_tick && echo "Rebase #$i" >mozart/is/pink && - git-update-index --add mozart/is/pink && - tree=$(git-write-tree) && - commit=$(echo "Rebase #$i" | git-commit-tree $tree -p $parent) && - git-update-ref refs/tags/rebase$i $commit && + git update-index --add mozart/is/pink && + tree=$(git write-tree) && + commit=$(echo "Rebase #$i" | git commit-tree $tree -p $parent) && + git update-ref refs/tags/rebase$i $commit && parent=$commit || return 1 done && - git-update-ref HEAD "$commit" && + git update-ref HEAD "$commit" && echo Rebase && - git-log' + git log' test_expect_success 'pack the source repository' ' git repack -a -d && @@ -68,7 +68,7 @@ test_expect_success 'pack the destination repository' ' test_expect_success \ 'pushing rewound head should not barf but require --force' ' # should not fail but refuse to update. - if git-send-pack ./victim/.git/ master + if git send-pack ./victim/.git/ master then # now it should fail with Pasky patch echo >&2 Gaah, it should have failed. @@ -85,7 +85,7 @@ test_expect_success \ true fi && # this should update - git-send-pack --force ./victim/.git/ master && + git send-pack --force ./victim/.git/ master && cmp victim/.git/refs/heads/master .git/refs/heads/master ' @@ -95,7 +95,7 @@ test_expect_success \ git branch extra master && cd .. && test -f victim/.git/refs/heads/extra && - git-send-pack ./victim/.git/ :extra master && + git send-pack ./victim/.git/ :extra master && ! test -f victim/.git/refs/heads/extra ' @@ -106,11 +106,69 @@ export HOME ;# this way we force the victim/.git/config to be used. test_expect_success \ 'pushing with --force should be denied with denyNonFastforwards' ' cd victim && - git-config receive.denyNonFastforwards true && + git config receive.denyNonFastforwards true && cd .. && - git-update-ref refs/heads/master master^ || return 1 - git-send-pack --force ./victim/.git/ master && return 1 - ! git diff .git/refs/heads/master victim/.git/refs/heads/master + git update-ref refs/heads/master master^ || return 1 + git send-pack --force ./victim/.git/ master && return 1 + ! test_cmp .git/refs/heads/master victim/.git/refs/heads/master +' + +test_expect_success \ + 'pushing does not include non-head refs' ' + mkdir parent && cd parent && + git init && touch file && git add file && git commit -m add && + cd .. && + git clone parent child && cd child && git push --all && + cd ../parent && + git branch -a >branches && ! grep origin/master branches +' + +rewound_push_setup() { + rm -rf parent child && + mkdir parent && cd parent && + git init && echo one >file && git add file && git commit -m one && + echo two >file && git commit -a -m two && + cd .. && + git clone parent child && cd child && git reset --hard HEAD^ +} + +rewound_push_succeeded() { + cmp ../parent/.git/refs/heads/master .git/refs/heads/master +} + +rewound_push_failed() { + if rewound_push_succeeded + then + false + else + true + fi +} + +test_expect_success \ + 'pushing explicit refspecs respects forcing' ' + rewound_push_setup && + if git send-pack ../parent/.git refs/heads/master:refs/heads/master + then + false + else + true + fi && rewound_push_failed && + git send-pack ../parent/.git +refs/heads/master:refs/heads/master && + rewound_push_succeeded +' + +test_expect_success \ + 'pushing wildcard refspecs respects forcing' ' + rewound_push_setup && + if git send-pack ../parent/.git refs/heads/*:refs/heads/* + then + false + else + true + fi && rewound_push_failed && + git send-pack ../parent/.git +refs/heads/*:refs/heads/* && + rewound_push_succeeded ' test_done