diff-lib: honor override_submodule_config flag bit
commit5768478edc2bccb6a3d6200e430490573140bfa6
authorJosip Sokcevic <sokcevic@google.com>
Wed, 14 Jun 2023 16:48:57 +0000 (14 09:48 -0700)
committerJunio C Hamano <gitster@pobox.com>
Wed, 14 Jun 2023 18:28:12 +0000 (14 11:28 -0700)
treef86267a3faccd0ba3c77da32bb12ed1bd7751c52
parentfe86abd7511a9a6862d5706c6fa1d9b57a63ba09
diff-lib: honor override_submodule_config flag bit

When `diff.ignoreSubmodules = all` is set and submodule commits are
manually staged (e.g. via `git-update-index`), `git-commit` should
record the commit  with updated submodules.

`index_differs_from` is called from `prepare_to_commit` with flags set to
`override_submodule_config = 1`. `index_differs_from` then merges the
default diff flags and passed flags.

When `diff.ignoreSubmodules` is set to "all", `flags` ends up having
both `override_submodule_config` and `ignore_submodules` set to 1. This
results in `git-commit` ignoring staged commits.

This patch restores original `flags.ignore_submodule` if
`flags.override_submodule_config` is set.

Signed-off-by: Josip Sokcevic <sokcevic@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
diff-lib.c
t/t7406-submodule-update.sh