|  | #!/bin/sh | 
|  | # | 
|  | # Copyright (c) 2005 Junio C Hamano | 
|  | # | 
|  |  | 
|  | test_description='See why rewinding head breaks send-pack | 
|  |  | 
|  | ' | 
|  | . ./test-lib.sh | 
|  |  | 
|  | 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. | 
|  | git-send-pack ./victim/.git/ master && | 
|  | 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 |