mirror of
https://github.com/git/git
synced 2024-08-27 11:39:22 +00:00
Merge branch 'jh/update-ref-d-through-symref'
"update-ref -d --deref SYM" to delete a ref through a symbolic ref that points to it did not remove it correctly. * 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()
This commit is contained in:
commit
cf22e272e4
2
refs.c
2
refs.c
|
@ -1779,7 +1779,7 @@ int delete_ref(const char *refname, const unsigned char *sha1, int delopt)
|
|||
* packed one. Also, if it was not loose we need to repack
|
||||
* without it.
|
||||
*/
|
||||
ret |= repack_without_ref(refname);
|
||||
ret |= repack_without_ref(lock->ref_name);
|
||||
|
||||
unlink_or_warn(git_path("logs/%s", lock->ref_name));
|
||||
invalidate_ref_cache(NULL);
|
||||
|
|
|
@ -74,6 +74,24 @@ test_expect_success "delete $m (by HEAD)" '
|
|||
'
|
||||
rm -f .git/$m
|
||||
|
||||
test_expect_success \
|
||||
"create $m (by HEAD)" \
|
||||
"git update-ref HEAD $A &&
|
||||
test $A"' = $(cat .git/'"$m"')'
|
||||
test_expect_success \
|
||||
"pack refs" \
|
||||
"git pack-refs --all"
|
||||
test_expect_success \
|
||||
"move $m (by HEAD)" \
|
||||
"git update-ref HEAD $B $A &&
|
||||
test $B"' = $(cat .git/'"$m"')'
|
||||
test_expect_success "delete $m (by HEAD) should remove both packed and loose $m" '
|
||||
git update-ref -d HEAD $B &&
|
||||
! grep "$m" .git/packed-refs &&
|
||||
! test -f .git/$m
|
||||
'
|
||||
rm -f .git/$m
|
||||
|
||||
cp -f .git/HEAD .git/HEAD.orig
|
||||
test_expect_success "delete symref without dereference" '
|
||||
git update-ref --no-deref -d HEAD &&
|
||||
|
|
Loading…
Reference in a new issue