diff options
author | Daniel Barkalow <barkalow@iabervon.org> | 2008-04-26 15:53:12 -0400 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2008-04-26 17:36:18 -0700 |
commit | be885d96fe0ebed47e637f3b0dd24fc5902f7081 (patch) | |
tree | b4c0c29c4b58ffe95c7765ebd38e6089973d7b44 /remote.c | |
parent | c13b2633f49e3e61b37973204793a4d9ef981175 (diff) | |
download | git-be885d96fe0ebed47e637f3b0dd24fc5902f7081.tar.gz |
Make ls-remote http://... list HEAD, like for git://...
This makes a struct ref able to represent a symref, and makes http.c
able to recognize one, and makes transport.c look for "HEAD" as a ref
in the list, and makes it dereference symrefs for the resulting ref,
if any.
Signed-off-by: Daniel Barkalow <barkalow@iabervon.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'remote.c')
-rw-r--r-- | remote.c | 23 |
1 files changed, 22 insertions, 1 deletions
@@ -706,13 +706,22 @@ struct ref *copy_ref_list(const struct ref *ref) return ret; } +void free_ref(struct ref *ref) +{ + if (!ref) + return; + free(ref->remote_status); + free(ref->symref); + free(ref); +} + void free_refs(struct ref *ref) { struct ref *next; while (ref) { next = ref->next; free(ref->peer_ref); - free(ref); + free_ref(ref); ref = next; } } @@ -1172,3 +1181,15 @@ int get_fetch_map(const struct ref *remote_refs, return 0; } + +int resolve_remote_symref(struct ref *ref, struct ref *list) +{ + if (!ref->symref) + return 0; + for (; list; list = list->next) + if (!strcmp(ref->symref, list->name)) { + hashcpy(ref->old_sha1, list->old_sha1); + return 0; + } + return 1; +} |