summaryrefslogtreecommitdiff
path: root/builtin
diff options
context:
space:
mode:
authorLibravatar Junio C Hamano <gitster@pobox.com>2011-08-01 15:00:35 -0700
committerLibravatar Junio C Hamano <gitster@pobox.com>2011-08-01 15:00:35 -0700
commit8ab19bc5de68c8929317f8aa694709b9e4b72956 (patch)
tree2b17acb16a898e2f135f8e8e6565898c996569ab /builtin
parentMerge branch 'jc/streaming-filter' (diff)
parentclone: always fetch remote HEAD (diff)
downloadtgif-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.c10
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();