diff options
author | Nicolas Pitre <nico@cam.org> | 2007-01-26 17:26:06 -0500 |
---|---|---|
committer | Junio C Hamano <junkio@cox.net> | 2007-01-28 02:16:46 -0800 |
commit | 1655707c9ec56847945854f8645ed64f74159e99 (patch) | |
tree | d9159101646d55b1d272aea8f09ac3af7638cd48 | |
parent | 9a13f0b71b887af42c3be854344f185c6dfa1d0d (diff) | |
download | git-1655707c9ec56847945854f8645ed64f74159e99.tar.gz git-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.c | 2 | ||||
-rw-r--r-- | refs.h | 1 |
2 files changed, 3 insertions, 0 deletions
@@ -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); } @@ -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; |