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>
This commit is contained in:

committed by
Junio C Hamano

parent
c13b2633f4
commit
be885d96fe
23
remote.c
23
remote.c
@ -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;
|
||||
}
|
||||
|
Reference in New Issue
Block a user