Merge branch 'dj/fetch-all-tags'
authorJunio C Hamano <gitster@pobox.com>
Fri, 14 Sep 2012 18:54:19 +0000 (11:54 -0700)
committerJunio C Hamano <gitster@pobox.com>
Fri, 14 Sep 2012 18:54:19 +0000 (11:54 -0700)
"git fetch --all", when passed "--no-tags", did not honor the
"--no-tags" option while fetching from individual remotes (the same
issue existed with "--tags", but combination "--all --tags" makes
much less sense than "--all --no-tags").

* dj/fetch-all-tags:
fetch --all: pass --tags/--no-tags through to each remote

builtin/fetch.c
t/t5514-fetch-multiple.sh
index 24be754e1b4444ea46752016ba77bdef1c892712..d0dcc8888f14e8305250afcab7eb4ca7a3f6648c 100644 (file)
@@ -858,6 +858,10 @@ static void add_options_to_argv(struct argv_array *argv)
                argv_array_push(argv, "--recurse-submodules");
        else if (recurse_submodules == RECURSE_SUBMODULES_ON_DEMAND)
                argv_array_push(argv, "--recurse-submodules=on-demand");
+       if (tags == TAGS_SET)
+               argv_array_push(argv, "--tags");
+       else if (tags == TAGS_UNSET)
+               argv_array_push(argv, "--no-tags");
        if (verbosity >= 2)
                argv_array_push(argv, "-v");
        if (verbosity >= 1)
index 227dd56137c469311209ebda43cb89f9734c6e68..0f8140957f8080f4a9f3283a1cfef7f3798ae454 100755 (executable)
@@ -151,4 +151,34 @@ test_expect_success 'git fetch --multiple (ignoring skipFetchAll)' '
         test_cmp ../expect output)
 '
 
+test_expect_success 'git fetch --all --no-tags' '
+       >expect &&
+       git clone one test5 &&
+       git clone test5 test6 &&
+       (cd test5 && git tag test-tag) &&
+       (
+               cd test6 &&
+               git fetch --all --no-tags &&
+               git tag >output
+       ) &&
+       test_cmp expect test6/output
+'
+
+test_expect_success 'git fetch --all --tags' '
+       echo test-tag >expect &&
+       git clone one test7 &&
+       git clone test7 test8 &&
+       (
+               cd test7 &&
+               test_commit test-tag &&
+               git reset --hard HEAD^
+       ) &&
+       (
+               cd test8 &&
+               git fetch --all --tags &&
+               git tag >output
+       ) &&
+       test_cmp expect test8/output
+'
+
 test_done