diff options
author | Daniel Barkalow <barkalow@iabervon.org> | 2008-04-26 15:53:09 -0400 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2008-04-26 17:36:17 -0700 |
commit | c13b2633f49e3e61b37973204793a4d9ef981175 (patch) | |
tree | 54f173438e506190b6bbc02f574ec0ab6b8339d7 /walker.c | |
parent | 36c79d2bf893b9957688a6c8c13cc0bf0589e596 (diff) | |
download | git-c13b2633f49e3e61b37973204793a4d9ef981175.tar.gz |
Make walker.fetch_ref() take a struct ref.
This simplifies a few things, makes a few things slightly more
complicated, but, more importantly, allows that, when struct ref can
represent a symref, http_fetch_ref() can return one.
Incidentally makes the string that http_fetch_ref() gets include "refs/"
(if appropriate), because that's how the name field of struct ref works.
As far as I can tell, the usage in walker:interpret_target() wouldn't have
worked previously, if it ever would have been used, which it wouldn't
(since the fetch process uses the hash instead of the name of the ref
there).
Signed-off-by: Daniel Barkalow <barkalow@iabervon.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'walker.c')
-rw-r--r-- | walker.c | 7 |
1 files changed, 6 insertions, 1 deletions
@@ -190,9 +190,14 @@ static int interpret_target(struct walker *walker, char *target, unsigned char * if (!get_sha1_hex(target, sha1)) return 0; if (!check_ref_format(target)) { - if (!walker->fetch_ref(walker, target, sha1)) { + struct ref *ref = alloc_ref(strlen(target)); + strcpy(ref->name, target); + if (!walker->fetch_ref(walker, ref)) { + hashcpy(sha1, ref->old_sha1); + free(ref); return 0; } + free(ref); } return -1; } |