diff options
author | Junio C Hamano <gitster@pobox.com> | 2012-11-25 18:44:17 -0800 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2012-11-25 18:44:17 -0800 |
commit | cf22e272e48a1b00ea0288400e1363ac41c5eb99 (patch) | |
tree | 6e947c4e5220c13df5ebb3ed98d517d5af2b106b | |
parent | Merge branch 'lt/diff-stat-show-0-lines' (diff) | |
parent | Fix failure to delete a packed ref through a symref (diff) | |
download | tgif-cf22e272e48a1b00ea0288400e1363ac41c5eb99.tar.xz |
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()
-rw-r--r-- | refs.c | 2 | ||||
-rwxr-xr-x | t/t1400-update-ref.sh | 18 |
2 files changed, 19 insertions, 1 deletions
@@ -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); diff --git a/t/t1400-update-ref.sh b/t/t1400-update-ref.sh index 4fd83a667a..e415ee0bbf 100755 --- a/t/t1400-update-ref.sh +++ b/t/t1400-update-ref.sh @@ -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 && |