mirror of
https://github.com/git/git.git
synced 2026-03-21 14:10:09 +01:00
fsck: check HEAD and reflog from other worktrees
fsck is a repo-wide operation and should check all references no matter which worktree they are associated to. Reported-by: Jeff King <peff@peff.net> Helped-by: Elijah Newren <newren@gmail.com> Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
committed by
Junio C Hamano
parent
a8c754d4e2
commit
b29759d89a
@@ -101,6 +101,41 @@ test_expect_success 'HEAD link pointing at a funny place' '
|
||||
grep "HEAD points to something strange" out
|
||||
'
|
||||
|
||||
test_expect_success 'HEAD link pointing at a funny object (from different wt)' '
|
||||
test_when_finished "mv .git/SAVED_HEAD .git/HEAD" &&
|
||||
test_when_finished "rm -rf .git/worktrees wt" &&
|
||||
git worktree add wt &&
|
||||
mv .git/HEAD .git/SAVED_HEAD &&
|
||||
echo $ZERO_OID >.git/HEAD &&
|
||||
# avoid corrupt/broken HEAD from interfering with repo discovery
|
||||
test_must_fail git -C wt fsck 2>out &&
|
||||
grep "main-worktree/HEAD: detached HEAD points" out
|
||||
'
|
||||
|
||||
test_expect_success 'other worktree HEAD link pointing at a funny object' '
|
||||
test_when_finished "rm -rf .git/worktrees other" &&
|
||||
git worktree add other &&
|
||||
echo $ZERO_OID >.git/worktrees/other/HEAD &&
|
||||
test_must_fail git fsck 2>out &&
|
||||
grep "worktrees/other/HEAD: detached HEAD points" out
|
||||
'
|
||||
|
||||
test_expect_success 'other worktree HEAD link pointing at missing object' '
|
||||
test_when_finished "rm -rf .git/worktrees other" &&
|
||||
git worktree add other &&
|
||||
echo "Contents missing from repo" | git hash-object --stdin >.git/worktrees/other/HEAD &&
|
||||
test_must_fail git fsck 2>out &&
|
||||
grep "worktrees/other/HEAD: invalid sha1 pointer" out
|
||||
'
|
||||
|
||||
test_expect_success 'other worktree HEAD link pointing at a funny place' '
|
||||
test_when_finished "rm -rf .git/worktrees other" &&
|
||||
git worktree add other &&
|
||||
echo "ref: refs/funny/place" >.git/worktrees/other/HEAD &&
|
||||
test_must_fail git fsck 2>out &&
|
||||
grep "worktrees/other/HEAD points to something strange" out
|
||||
'
|
||||
|
||||
test_expect_success 'email without @ is okay' '
|
||||
git cat-file commit HEAD >basis &&
|
||||
sed "s/@/AT/" basis >okay &&
|
||||
|
||||
Reference in New Issue
Block a user