Johan Herland <johan@xxxxxxxxxxx> writes: > When deleting a ref through a symref (e.g. using 'git update-ref -d HEAD' > to delete refs/heads/master), we would remove the loose ref, but a packed > version of the same ref would remain, the end result being that instead of > deleting refs/heads/master we would appear to reset it to its state as of > the last repack. > > This patch fixes the issue, by making sure we pass the correct ref name > when invoking repack_without_ref() from within delete_ref(). > > Signed-off-by: Johan Herland <johan@xxxxxxxxxxx> > --- Thanks. Will queue. > refs.c | 2 +- > t/t1400-update-ref.sh | 2 +- > 2 files changed, 2 insertions(+), 2 deletions(-) > > diff --git a/refs.c b/refs.c > index 726c53c..6cec1c8 100644 > --- a/refs.c > +++ b/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); > diff --git a/t/t1400-update-ref.sh b/t/t1400-update-ref.sh > index f7ec203..e415ee0 100755 > --- a/t/t1400-update-ref.sh > +++ b/t/t1400-update-ref.sh > @@ -85,7 +85,7 @@ test_expect_success \ > "move $m (by HEAD)" \ > "git update-ref HEAD $B $A && > test $B"' = $(cat .git/'"$m"')' > -test_expect_failure "delete $m (by HEAD) should remove both packed and loose $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 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html