Merge branch 'jl/maint-fetch-recursive-fix' into maint

* jl/maint-fetch-recursive-fix:
  fetch: Also fetch submodules in subdirectories in on-demand mode
This commit is contained in:
Junio C Hamano 2011-08-01 14:44:17 -07:00
commit 62607e4813
2 changed files with 9 additions and 8 deletions

View file

@ -388,6 +388,7 @@ void check_for_new_submodule_commits(unsigned char new_sha1[20])
while (parent) { while (parent) {
struct diff_options diff_opts; struct diff_options diff_opts;
diff_setup(&diff_opts); diff_setup(&diff_opts);
DIFF_OPT_SET(&diff_opts, RECURSIVE);
diff_opts.output_format |= DIFF_FORMAT_CALLBACK; diff_opts.output_format |= DIFF_FORMAT_CALLBACK;
diff_opts.format_callback = submodule_collect_changed_cb; diff_opts.format_callback = submodule_collect_changed_cb;
if (diff_setup_done(&diff_opts) < 0) if (diff_setup_done(&diff_opts) < 0)

View file

@ -47,7 +47,7 @@ test_expect_success setup '
git init && git init &&
echo subcontent > subfile && echo subcontent > subfile &&
git add subfile && git add subfile &&
git submodule add "$pwd/deepsubmodule" deepsubmodule && git submodule add "$pwd/deepsubmodule" subdir/deepsubmodule &&
git commit -a -m new git commit -a -m new
) && ) &&
git submodule add "$pwd/submodule" submodule && git submodule add "$pwd/submodule" submodule &&
@ -58,7 +58,7 @@ test_expect_success setup '
git submodule update --init --recursive git submodule update --init --recursive
) && ) &&
echo "Fetching submodule submodule" > expect.out && 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" ' 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 submodule &&
( (
cd deepsubmodule && cd subdir/deepsubmodule &&
git fetch && git fetch &&
git checkout -q FETCH_HEAD git checkout -q FETCH_HEAD
) && ) &&
head1=$(git rev-parse --short HEAD^) && head1=$(git rev-parse --short HEAD^) &&
git add deepsubmodule && git add subdir/deepsubmodule &&
git commit -m "new deepsubmodule" git commit -m "new deepsubmodule"
head2=$(git rev-parse --short HEAD) && head2=$(git rev-parse --short HEAD) &&
echo "From $pwd/submodule" > ../expect.err.sub && 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 submodule &&
( (
cd deepsubmodule && cd subdir/deepsubmodule &&
git fetch && git fetch &&
git checkout -q FETCH_HEAD git checkout -q FETCH_HEAD
) && ) &&
head1=$(git rev-parse --short HEAD^) && head1=$(git rev-parse --short HEAD^) &&
git add deepsubmodule && git add subdir/deepsubmodule &&
git commit -m "new deepsubmodule" git commit -m "new deepsubmodule"
head2=$(git rev-parse --short HEAD) && head2=$(git rev-parse --short HEAD) &&
echo "From $pwd/submodule" > ../expect.err.sub && 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 && git config fetch.recurseSubmodules false &&
( (
cd submodule && 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 fetch --recurse-submodules=on-demand >../actual.out 2>../actual.err &&
git config --unset fetch.recurseSubmodules git config --unset fetch.recurseSubmodules
( (
cd submodule && 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 && test_i18ncmp expect.out actual.out &&