Merge branch 'bw/rebase-i-ignored-submodule-fix' into maint
authorJunio C Hamano <gitster@pobox.com>
Tue, 21 Nov 2017 05:05:29 +0000 (14:05 +0900)
committerJunio C Hamano <gitster@pobox.com>
Tue, 21 Nov 2017 05:05:29 +0000 (14:05 +0900)
"git rebase -i" recently started misbehaving when a submodule that
is configured with 'submodule.<name>.ignore' is dirty; this has
been corrected.

* bw/rebase-i-ignored-submodule-fix:
wt-status: actually ignore submodules when requested

t/t3426-rebase-submodule.sh
wt-status.c
index ebf4f5e4b2c1c1cc20a49888df14cedd14b49a8b..a2bba04ba96cb5e16dfbecf3f0d6180e150a7ec0 100755 (executable)
@@ -40,4 +40,21 @@ git_rebase_interactive () {
 
 test_submodule_switch "git_rebase_interactive"
 
+test_expect_success 'rebase interactive ignores modified submodules' '
+       test_when_finished "rm -rf super sub" &&
+       git init sub &&
+       git -C sub commit --allow-empty -m "Initial commit" &&
+       git init super &&
+       git -C super submodule add ../sub &&
+       git -C super config submodule.sub.ignore dirty &&
+       >super/foo &&
+       git -C super add foo &&
+       git -C super commit -m "Initial commit" &&
+       test_commit -C super a &&
+       test_commit -C super b &&
+       test_commit -C super/sub c &&
+       set_fake_editor &&
+       git -C super rebase -i HEAD^^
+'
+
 test_done
index 29bc64cc0280675065142bac257930904216d415..94e5ebaf8b11840383edfdae9624d34ae283061a 100644 (file)
@@ -2262,8 +2262,10 @@ int has_unstaged_changes(int ignore_submodules)
        int result;
 
        init_revisions(&rev_info, NULL);
-       if (ignore_submodules)
+       if (ignore_submodules) {
                DIFF_OPT_SET(&rev_info.diffopt, IGNORE_SUBMODULES);
+               DIFF_OPT_SET(&rev_info.diffopt, OVERRIDE_SUBMODULE_CONFIG);
+       }
        DIFF_OPT_SET(&rev_info.diffopt, QUICK);
        diff_setup_done(&rev_info.diffopt);
        result = run_diff_files(&rev_info, 0);