You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
67 lines
1.4 KiB
67 lines
1.4 KiB
#!/bin/sh |
|
# |
|
# Copyright (c) 2005 Junio C Hamano |
|
# |
|
|
|
test_description='See why rewinding head breaks send-pack |
|
|
|
' |
|
. ./test-lib.sh |
|
|
|
touch cpio-test |
|
test_expect_success 'working cpio' 'echo cpio-test | cpio -o > /dev/null' |
|
|
|
cnt='1' |
|
test_expect_success setup ' |
|
tree=$(git-write-tree) && |
|
commit=$(echo "Commit #0" | git-commit-tree $tree) && |
|
zero=$commit && |
|
parent=$zero && |
|
for i in $cnt |
|
do |
|
sleep 1 && |
|
commit=$(echo "Commit #$i" | git-commit-tree $tree -p $parent) && |
|
parent=$commit || return 1 |
|
done && |
|
git-update-ref HEAD "$commit" && |
|
git-clone -l ./. victim && |
|
cd victim && |
|
git-log && |
|
cd .. && |
|
git-update-ref HEAD "$zero" && |
|
parent=$zero && |
|
for i in $cnt |
|
do |
|
sleep 1 && |
|
commit=$(echo "Rebase #$i" | git-commit-tree $tree -p $parent) && |
|
parent=$commit || return 1 |
|
done && |
|
git-update-ref HEAD "$commit" && |
|
echo Rebase && |
|
git-log' |
|
|
|
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 |
|
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! |
|
false |
|
else |
|
true |
|
fi && |
|
# this should update |
|
git-send-pack --force ./victim/.git/ master && |
|
cmp victim/.git/refs/heads/master .git/refs/heads/master |
|
' |
|
|
|
test_done
|
|
|