clone: fix ref selection in --single-branch --branch=xxx
authorNguyễn Thái Ngọc Duy <pclouds@gmail.com>
Fri, 22 Jun 2012 09:35:47 +0000 (16:35 +0700)
committerJunio C Hamano <gitster@pobox.com>
Fri, 22 Jun 2012 21:16:34 +0000 (14:16 -0700)
 - do not fetch HEAD
 - do not also fetch refs following "xxx"

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/clone.c
t/t5500-fetch-pack.sh

index a4d8d25ee319c2bbcfe5b450468cfb41d3fcd0d6..f86aaf18f792d00978c19f5bd9affaf9c3e6fd6f 100644 (file)
@@ -433,8 +433,11 @@ static struct ref *wanted_peer_refs(const struct ref *refs,
 
                if (!option_branch)
                        remote_head = guess_remote_head(head, refs, 0);
-               else
-                       remote_head = find_remote_branch(refs, option_branch);
+               else {
+                       local_refs = NULL;
+                       tail = &local_refs;
+                       remote_head = copy_ref(find_remote_branch(refs, option_branch));
+               }
 
                if (!remote_head && option_branch)
                        warning(_("Could not find remote branch %s to clone."),
index 1d1ca98588bd7e8ae264179b5a4a93371c567346..e80a2af348565a0a3d001ef28cb76427acfee495 100755 (executable)
@@ -125,6 +125,11 @@ test_expect_success 'single branch object count' '
        test_cmp expected count.singlebranch
 '
 
+test_expect_success 'single given branch clone' '
+       git clone --single-branch --branch A "file://$(pwd)/." branch-a &&
+       test_must_fail git --git-dir=branch-a/.git rev-parse origin/B
+'
+
 test_expect_success 'clone shallow' '
        git clone --no-single-branch --depth 2 "file://$(pwd)/." shallow
 '
@@ -276,7 +281,7 @@ test_expect_success 'clone shallow with --branch' '
 '
 
 test_expect_success 'clone shallow object count' '
-       echo "in-pack: 12" > count3.expected &&
+       echo "in-pack: 6" > count3.expected &&
        GIT_DIR=shallow3/.git git count-objects -v |
                grep "^in-pack" > count3.actual &&
        test_cmp count3.expected count3.actual