summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2017-11-21 14:05:29 +0900
committerJunio C Hamano <gitster@pobox.com>2017-11-21 14:05:29 +0900
commit6baa11dc2a5bb926e88ee9befe88ecf3318ed83c (patch)
treead7a460b2836dc07870cdbbddec381c4c48840cf
parent5a1f5c3060427375de30d609d72ac032516be4c2 (diff)
parentc6d8ccf3a25556e1cac99433721e3c05ba970d89 (diff)
downloadgit-6baa11dc2a5bb926e88ee9befe88ecf3318ed83c.tar.gz
Merge branch 'bw/rebase-i-ignored-submodule-fix' into maint
"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
-rwxr-xr-xt/t3426-rebase-submodule.sh17
-rw-r--r--wt-status.c4
2 files changed, 20 insertions, 1 deletions
diff --git a/t/t3426-rebase-submodule.sh b/t/t3426-rebase-submodule.sh
index ebf4f5e4b2..a2bba04ba9 100755
--- a/t/t3426-rebase-submodule.sh
+++ b/t/t3426-rebase-submodule.sh
@@ -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
diff --git a/wt-status.c b/wt-status.c
index 29bc64cc02..94e5ebaf8b 100644
--- a/wt-status.c
+++ b/wt-status.c
@@ -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);