summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLibravatar Nicolas Pitre <nico@cam.org>2007-01-26 17:26:06 -0500
committerLibravatar Junio C Hamano <junkio@cox.net>2007-01-28 02:16:46 -0800
commit1655707c9ec56847945854f8645ed64f74159e99 (patch)
treed9159101646d55b1d272aea8f09ac3af7638cd48
parentmake reflog filename independent from struct ref_lock (diff)
downloadtgif-1655707c9ec56847945854f8645ed64f74159e99.tar.xz
lock_ref_sha1_basic(): remember the original name of a ref when resolving it
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>
-rw-r--r--refs.c2
-rw-r--r--refs.h1
2 files changed, 3 insertions, 0 deletions
diff --git a/refs.c b/refs.c
index 3b295f3806..bd76ea65a9 100644
--- 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 2d2ba149ab..94a58b41fb 100644
--- 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;