diff options
author | Junio C Hamano <gitster@pobox.com> | 2011-08-01 15:00:35 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2011-08-01 15:00:35 -0700 |
commit | 8ab19bc5de68c8929317f8aa694709b9e4b72956 (patch) | |
tree | 2b17acb16a898e2f135f8e8e6565898c996569ab /builtin | |
parent | Merge branch 'jc/streaming-filter' (diff) | |
parent | clone: always fetch remote HEAD (diff) | |
download | tgif-8ab19bc5de68c8929317f8aa694709b9e4b72956.tar.xz |
Merge branch 'jk/clone-detached'
* jk/clone-detached:
clone: always fetch remote HEAD
make copy_ref globally available
consider only branches in guess_remote_head
t: add tests for cloning remotes with detached HEAD
Diffstat (limited to 'builtin')
-rw-r--r-- | builtin/clone.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/builtin/clone.c b/builtin/clone.c index a15784a7b8..7663bc22c9 100644 --- a/builtin/clone.c +++ b/builtin/clone.c @@ -345,8 +345,9 @@ static void remove_junk_on_signal(int signo) static struct ref *wanted_peer_refs(const struct ref *refs, struct refspec *refspec) { - struct ref *local_refs = NULL; - struct ref **tail = &local_refs; + struct ref *head = copy_ref(find_ref_by_name(refs, "HEAD")); + struct ref *local_refs = head; + struct ref **tail = head ? &head->next : &local_refs; get_fetch_map(refs, refspec, &tail, 0); if (!option_mirror) @@ -359,8 +360,11 @@ static void write_remote_refs(const struct ref *local_refs) { const struct ref *r; - for (r = local_refs; r; r = r->next) + for (r = local_refs; r; r = r->next) { + if (!r->peer_ref) + continue; add_extra_ref(r->peer_ref->name, r->old_sha1, 0); + } pack_refs(PACK_REFS_ALL); clear_extra_refs(); |