]> Kevux Git Server - rit/commitdiff
lock_ref_sha1_basic(): remember the original name of a ref when resolving it
authorNicolas Pitre <nico@cam.org>
Fri, 26 Jan 2007 22:26:06 +0000 (17:26 -0500)
committerJunio C Hamano <junkio@cox.net>
Sun, 28 Jan 2007 10:16:46 +0000 (02:16 -0800)
A ref might be pointing to another ref but only the name of the last ref
is remembered.  Let's remember about the first name as well.

Signed-off-by: Nicolas Pitre <nico@cam.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
refs.c
refs.h

diff --git a/refs.c b/refs.c
index 3b295f3..bd76ea6 100644 (file)
--- a/refs.c
+++ b/refs.c
@@ -680,6 +680,7 @@ static struct ref_lock *lock_ref_sha1_basic(const char *ref, const unsigned char
        lock->lk = xcalloc(1, sizeof(struct lock_file));
 
        lock->ref_name = xstrdup(ref);
+       lock->orig_ref_name = xstrdup(orig_ref);
        ref_file = git_path("%s", ref);
        lock->force_write = lstat(ref_file, &st) && errno == ENOENT;
 
@@ -919,6 +920,7 @@ void unlock_ref(struct ref_lock *lock)
                        rollback_lock_file(lock->lk);
        }
        free(lock->ref_name);
+       free(lock->orig_ref_name);
        free(lock);
 }
 
diff --git a/refs.h b/refs.h
index 2d2ba14..94a58b4 100644 (file)
--- a/refs.h
+++ b/refs.h
@@ -3,6 +3,7 @@
 
 struct ref_lock {
        char *ref_name;
+       char *orig_ref_name;
        struct lock_file *lk;
        unsigned char old_sha1[20];
        int lock_fd;