Skip to content

Commit 75c96e0

Browse files
jherlandgitster
authored andcommitted
t1400-update-ref: Add test verifying bug with symrefs in delete_ref()
When deleting a ref through a symref (e.g. using 'git update-ref -d HEAD' to delete refs/heads/master), we currently fail to remove the packed version of that ref. This testcase demonstrates the bug. Signed-off-by: Johan Herland <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent 13baa9f commit 75c96e0

File tree

1 file changed

+18
-0
lines changed

1 file changed

+18
-0
lines changed

t/t1400-update-ref.sh

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,24 @@ test_expect_success "delete $m (by HEAD)" '
7474
'
7575
rm -f .git/$m
7676

77+
test_expect_success \
78+
"create $m (by HEAD)" \
79+
"git update-ref HEAD $A &&
80+
test $A"' = $(cat .git/'"$m"')'
81+
test_expect_success \
82+
"pack refs" \
83+
"git pack-refs --all"
84+
test_expect_success \
85+
"move $m (by HEAD)" \
86+
"git update-ref HEAD $B $A &&
87+
test $B"' = $(cat .git/'"$m"')'
88+
test_expect_failure "delete $m (by HEAD) should remove both packed and loose $m" '
89+
git update-ref -d HEAD $B &&
90+
! grep "$m" .git/packed-refs &&
91+
! test -f .git/$m
92+
'
93+
rm -f .git/$m
94+
7795
cp -f .git/HEAD .git/HEAD.orig
7896
test_expect_success "delete symref without dereference" '
7997
git update-ref --no-deref -d HEAD &&

0 commit comments

Comments
 (0)