Skip to content

Commit ed20513

Browse files
committed
Merge branch 'jh/update-ref-d-through-symref' into maint
* jh/update-ref-d-through-symref: Fix failure to delete a packed ref through a symref t1400-update-ref: Add test verifying bug with symrefs in delete_ref()
2 parents a7c940e + b274a71 commit ed20513

File tree

2 files changed

+19
-1
lines changed

2 files changed

+19
-1
lines changed

refs.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1770,7 +1770,7 @@ int delete_ref(const char *refname, const unsigned char *sha1, int delopt)
17701770
* packed one. Also, if it was not loose we need to repack
17711771
* without it.
17721772
*/
1773-
ret |= repack_without_ref(refname);
1773+
ret |= repack_without_ref(lock->ref_name);
17741774

17751775
unlink_or_warn(git_path("logs/%s", lock->ref_name));
17761776
invalidate_ref_cache(NULL);

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_success "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)