Code

Merge branch 'jl/maint-fetch-recursive-fix'
authorJunio C Hamano <gitster@pobox.com>
Wed, 13 Jul 2011 21:31:37 +0000 (14:31 -0700)
committerJunio C Hamano <gitster@pobox.com>
Wed, 13 Jul 2011 21:31:37 +0000 (14:31 -0700)
* jl/maint-fetch-recursive-fix:
  fetch: Also fetch submodules in subdirectories in on-demand mode

submodule.c
t/t5526-fetch-submodules.sh

index b6dec70bd1a6b35c8ecc6a1a9953d64bfe6c4510..1ba9646d3484fe2a11c1faba339c4e333186085e 100644 (file)
@@ -388,6 +388,7 @@ void check_for_new_submodule_commits(unsigned char new_sha1[20])
                while (parent) {
                        struct diff_options diff_opts;
                        diff_setup(&diff_opts);
+                       DIFF_OPT_SET(&diff_opts, RECURSIVE);
                        diff_opts.output_format |= DIFF_FORMAT_CALLBACK;
                        diff_opts.format_callback = submodule_collect_changed_cb;
                        if (diff_setup_done(&diff_opts) < 0)
index a1fddd4d15fb2c3cb5d0ab6e09a461314fb4b1f1..ca5b027c557014cff85ca4ba7d118db578a57256 100755 (executable)
@@ -47,7 +47,7 @@ test_expect_success setup '
                git init &&
                echo subcontent > subfile &&
                git add subfile &&
-               git submodule add "$pwd/deepsubmodule" deepsubmodule &&
+               git submodule add "$pwd/deepsubmodule" subdir/deepsubmodule &&
                git commit -a -m new
        ) &&
        git submodule add "$pwd/submodule" submodule &&
@@ -58,7 +58,7 @@ test_expect_success setup '
                git submodule update --init --recursive
        ) &&
        echo "Fetching submodule submodule" > expect.out &&
-       echo "Fetching submodule submodule/deepsubmodule" >> expect.out
+       echo "Fetching submodule submodule/subdir/deepsubmodule" >> expect.out
 '
 
 test_expect_success "fetch --recurse-submodules recurses into submodules" '
@@ -277,12 +277,12 @@ test_expect_success "Recursion picks up all submodules when necessary" '
        (
                cd submodule &&
                (
-                       cd deepsubmodule &&
+                       cd subdir/deepsubmodule &&
                        git fetch &&
                        git checkout -q FETCH_HEAD
                ) &&
                head1=$(git rev-parse --short HEAD^) &&
-               git add deepsubmodule &&
+               git add subdir/deepsubmodule &&
                git commit -m "new deepsubmodule"
                head2=$(git rev-parse --short HEAD) &&
                echo "From $pwd/submodule" > ../expect.err.sub &&
@@ -309,12 +309,12 @@ test_expect_success "'--recurse-submodules=on-demand' doesn't recurse when no ne
        (
                cd submodule &&
                (
-                       cd deepsubmodule &&
+                       cd subdir/deepsubmodule &&
                        git fetch &&
                        git checkout -q FETCH_HEAD
                ) &&
                head1=$(git rev-parse --short HEAD^) &&
-               git add deepsubmodule &&
+               git add subdir/deepsubmodule &&
                git commit -m "new deepsubmodule"
                head2=$(git rev-parse --short HEAD) &&
                echo "From $pwd/submodule" > ../expect.err.sub &&
@@ -345,13 +345,13 @@ test_expect_success "'--recurse-submodules=on-demand' recurses as deep as necess
                git config fetch.recurseSubmodules false &&
                (
                        cd submodule &&
-                       git config -f .gitmodules submodule.deepsubmodule.fetchRecursive false
+                       git config -f .gitmodules submodule.subdir/deepsubmodule.fetchRecursive false
                ) &&
                git fetch --recurse-submodules=on-demand >../actual.out 2>../actual.err &&
                git config --unset fetch.recurseSubmodules
                (
                        cd submodule &&
-                       git config --unset -f .gitmodules submodule.deepsubmodule.fetchRecursive
+                       git config --unset -f .gitmodules submodule.subdir/deepsubmodule.fetchRecursive
                )
        ) &&
        test_i18ncmp expect.out actual.out &&