X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=t%2Ft5400-send-pack.sh;h=57c6397be116bb93af2ccffb0cee2d4bb3901ca4;hb=09fba7a59d38d1cafaf33eadaf1d409c4113b30c;hp=fb8320d755ab38ca7b3f1d7965ceeeb336b12e65;hpb=215a7ad1ef790467a4cd3f0dcffbd6e5f04c38f7;p=git.git diff --git a/t/t5400-send-pack.sh b/t/t5400-send-pack.sh index fb8320d75..57c6397be 100755 --- a/t/t5400-send-pack.sh +++ b/t/t5400-send-pack.sh @@ -8,39 +8,75 @@ test_description='See why rewinding head breaks send-pack ' . ./test-lib.sh -cnt='1' +cnt=64 test_expect_success setup ' - tree=$(git-write-tree) && - commit=$(echo "Commit #0" | git-commit-tree $tree) && + 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) && zero=$commit && parent=$zero && - for i in $cnt + i=0 && + while test $i -le $cnt do - sleep 1 && - commit=$(echo "Commit #$i" | git-commit-tree $tree -p $parent) && + 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 && parent=$commit || return 1 done && - echo "$commit" >.git/HEAD && - git-clone.sh -l ./. victim && + git update-ref HEAD "$commit" && + git-clone ./. victim && cd victim && - git-log.sh && + git log && cd .. && - echo $zero >.git/HEAD && + git update-ref HEAD "$zero" && parent=$zero && - for i in $cnt + i=0 && + while test $i -le $cnt do - sleep 1 && - commit=$(echo "Rebase #$i" | git-commit-tree $tree -p $parent) && + 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 && parent=$commit || return 1 done && - echo "$commit" >.git/HEAD && + git update-ref HEAD "$commit" && echo Rebase && - git-log.sh' + git log' + +test_expect_success 'pack the source repository' ' + git repack -a -d && + git prune +' + +test_expect_success 'pack the destination repository' ' + cd victim && + git repack -a -d && + git prune && + cd .. +' test_expect_success \ - 'pushing rewound head should not barf but require --force' ' + 'pushing rewound head should not barf but require --force' ' # should not fail but refuse to update. - 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. + false + else + echo >&2 Thanks, it correctly failed. + true + fi && if cmp victim/.git/refs/heads/master .git/refs/heads/master then # should have been left as it was! @@ -53,4 +89,38 @@ test_expect_success \ cmp victim/.git/refs/heads/master .git/refs/heads/master ' +test_expect_success \ + 'push can be used to delete a ref' ' + cd victim && + git branch extra master && + cd .. && + test -f victim/.git/refs/heads/extra && + git-send-pack ./victim/.git/ :extra master && + ! test -f victim/.git/refs/heads/extra +' + +unset GIT_CONFIG GIT_CONFIG_LOCAL +HOME=`pwd`/no-such-directory +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 && + 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 +' + +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 -q origin/master branches +' + test_done