From: brian m. carlson <hidden> Date: 2016-06-15 22:58:26
There are configuration options for each submodule that specify under what
circumstances git status should display output for that submodule.
Unfortunately, these settings were not being respected, and as such the tests
were marked TODO.
This patch series consists of two patches: the first is a fix for a confusing
variable name, and the latter actually makes git status not output the submodule
information. The tests have been updated accordingly.
Changes from v1:
* Handle moved submodules by not ignoring them.
* Use sm_path instead of path.
* Only ignore when --for-status is given.
brian m. carlson (2):
submodule: fix confusing variable name
submodule: don't print status output with ignore=all
git-submodule.sh | 15 +++++++++++----
t/t7508-status.sh | 4 ++--
2 files changed, 13 insertions(+), 6 deletions(-)
--
1.8.4.rc2.564.g10ce5ae
From: brian m. carlson <hidden> Date: 2016-06-15 22:58:26
git status prints information for submodules, but it should ignore the status of
those which have submodule.<name>.ignore set to all. Fix it so that it does
properly ignore those which have that setting either in .git/config or in
.gitmodules.
Not ignored are submodules that are added, deleted, or moved (which is
essentially a combination of the first two) because it is not easily possible to
determine the old path once a move has occurred, nor is it easily possible to
detect which adds and deletions are moves and which are not. This also
preserves the previous behavior of always listing modules which are to be
deleted.
Signed-off-by: brian m. carlson <redacted>
---
git-submodule.sh | 7 +++++++
t/t7508-status.sh | 4 ++--
2 files changed, 9 insertions(+), 2 deletions(-)
@@ -1036,6 +1036,13 @@ cmd_summary() {do# Always show modules deleted or type-changed (blob<->module)test$status=D-o$status=T&&echo"$sm_path"&&continue+# Respect the ignore setting for --for-status.+iftest-n$for_status+then+name=$(module_name"$sm_path")+ignore_config=$(get_submodule_config"$name"ignorenone)+test$status!=A-a$ignore_config=all&&continue+fi# Also show added or modified modules which are checked outGIT_DIR="$sm_path/.git"git-rev-parse--git-dir>/dev/null2>&1&&echo"$sm_path"
From: brian m. carlson <hidden> Date: 2016-06-15 22:58:26
cmd_summary reads the output of git diff, but reads in the submodule path into a
variable called name. Since this variable does not contain the name of the
submodule, but the path, rename it to be clearer what data it actually holds.
Signed-off-by: brian m. carlson <redacted>
---
git-submodule.sh | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
@@ -1032,13 +1032,13 @@ cmd_summary() {# Get modified modules cared by usermodules=$(git$diff_cmd$cached--ignore-submodules=dirty--raw$head--"$@"|sane_egrep'^:([0-7]* )?160000'|-whilereadmod_srcmod_dstsha1_srcsha1_dststatusname+whilereadmod_srcmod_dstsha1_srcsha1_dststatussm_pathdo# Always show modules deleted or type-changed (blob<->module)-test$status=D-o$status=T&&echo"$name"&&continue+test$status=D-o$status=T&&echo"$sm_path"&&continue# Also show added or modified modules which are checked out-GIT_DIR="$name/.git"git-rev-parse--git-dir>/dev/null2>&1&&-echo"$name"+GIT_DIR="$sm_path/.git"git-rev-parse--git-dir>/dev/null2>&1&&+echo"$sm_path"done)
cmd_summary reads the output of git diff, but reads in the submodule path into a
variable called name. Since this variable does not contain the name of the
submodule, but the path, rename it to be clearer what data it actually holds.
Signed-off-by: brian m. carlson <redacted>
Thanks, this one is looking good to me.
Acked-by: Jens Lehmann <redacted>
@@ -1032,13 +1032,13 @@ cmd_summary() {# Get modified modules cared by usermodules=$(git$diff_cmd$cached--ignore-submodules=dirty--raw$head--"$@"|sane_egrep'^:([0-7]* )?160000'|-whilereadmod_srcmod_dstsha1_srcsha1_dststatusname+whilereadmod_srcmod_dstsha1_srcsha1_dststatussm_pathdo# Always show modules deleted or type-changed (blob<->module)-test$status=D-o$status=T&&echo"$name"&&continue+test$status=D-o$status=T&&echo"$sm_path"&&continue# Also show added or modified modules which are checked out-GIT_DIR="$name/.git"git-rev-parse--git-dir>/dev/null2>&1&&-echo"$name"+GIT_DIR="$sm_path/.git"git-rev-parse--git-dir>/dev/null2>&1&&+echo"$sm_path"done)
git status prints information for submodules, but it should ignore the status of
those which have submodule.<name>.ignore set to all. Fix it so that it does
properly ignore those which have that setting either in .git/config or in
.gitmodules.
Not ignored are submodules that are added, deleted, or moved (which is
essentially a combination of the first two) because it is not easily possible to
determine the old path once a move has occurred, nor is it easily possible to
detect which adds and deletions are moves and which are not. This also
preserves the previous behavior of always listing modules which are to be
deleted.
Sounds sane. Even though we should be able to follow renames by inspecting
the old .gitmodules content with the new --blob option of git config, I doubt
it'll be worth the hassle. Thanks for fixing two known test breakages.
Acked-by: Jens Lehmann <redacted>
@@ -1036,6 +1036,13 @@ cmd_summary() {do# Always show modules deleted or type-changed (blob<->module)test$status=D-o$status=T&&echo"$sm_path"&&continue+# Respect the ignore setting for --for-status.+iftest-n$for_status+then+name=$(module_name"$sm_path")+ignore_config=$(get_submodule_config"$name"ignorenone)+test$status!=A-a$ignore_config=all&&continue+fi# Also show added or modified modules which are checked outGIT_DIR="$sm_path/.git"git-rev-parse--git-dir>/dev/null2>&1&&echo"$sm_path"