Browse Source

Merge branch 'bw/rebase-i-ignored-submodule-fix'

"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
maint
Junio C Hamano 7 years ago
parent
commit
b50d82b00a
  1. 17
      t/t3426-rebase-submodule.sh
  2. 4
      wt-status.c

17
t/t3426-rebase-submodule.sh

@ -40,4 +40,21 @@ git_rebase_interactive () { @@ -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

4
wt-status.c

@ -2267,8 +2267,10 @@ int has_unstaged_changes(int ignore_submodules) @@ -2267,8 +2267,10 @@ int has_unstaged_changes(int ignore_submodules)
int result;

init_revisions(&rev_info, NULL);
if (ignore_submodules)
if (ignore_submodules) {
rev_info.diffopt.flags.ignore_submodules = 1;
rev_info.diffopt.flags.override_submodule_config = 1;
}
rev_info.diffopt.flags.quick = 1;
diff_setup_done(&rev_info.diffopt);
result = run_diff_files(&rev_info, 0);

Loading…
Cancel
Save