git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
* [PATCH v2 0/2] Don't print status output with submodule.<name>.ignore=all
@ 2013-08-17 17:25 brian m. carlson
  2013-08-17 17:25 ` [PATCH v2 1/2] submodule: fix confusing variable name brian m. carlson
  2013-08-17 17:25 ` [PATCH v2 2/2] submodule: don't print status output with ignore=all brian m. carlson
  0 siblings, 2 replies; 5+ messages in thread
From: brian m. carlson @ 2013-08-17 17:25 UTC (permalink / raw)
  To: git

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

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH v2 1/2] submodule: fix confusing variable name
  2013-08-17 17:25 [PATCH v2 0/2] Don't print status output with submodule.<name>.ignore=all brian m. carlson
@ 2013-08-17 17:25 ` brian m. carlson
  2013-08-19 21:09   ` Jens Lehmann
  2013-08-17 17:25 ` [PATCH v2 2/2] submodule: don't print status output with ignore=all brian m. carlson
  1 sibling, 1 reply; 5+ messages in thread
From: brian m. carlson @ 2013-08-17 17:25 UTC (permalink / raw)
  To: git

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 <sandals@crustytoothpaste.net>
---
 git-submodule.sh | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/git-submodule.sh b/git-submodule.sh
index 2979197..38520db 100755
--- a/git-submodule.sh
+++ b/git-submodule.sh
@@ -1032,13 +1032,13 @@ cmd_summary() {
 	# Get modified modules cared by user
 	modules=$(git $diff_cmd $cached --ignore-submodules=dirty --raw $head -- "$@" |
 		sane_egrep '^:([0-7]* )?160000' |
-		while read mod_src mod_dst sha1_src sha1_dst status name
+		while read mod_src mod_dst sha1_src sha1_dst status sm_path
 		do
 			# 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/null 2>&1 &&
-			echo "$name"
+			GIT_DIR="$sm_path/.git" git-rev-parse --git-dir >/dev/null 2>&1 &&
+			echo "$sm_path"
 		done
 	)
 
-- 
1.8.4.rc2.564.g10ce5ae

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH v2 2/2] submodule: don't print status output with ignore=all
  2013-08-17 17:25 [PATCH v2 0/2] Don't print status output with submodule.<name>.ignore=all brian m. carlson
  2013-08-17 17:25 ` [PATCH v2 1/2] submodule: fix confusing variable name brian m. carlson
@ 2013-08-17 17:25 ` brian m. carlson
  2013-08-19 21:14   ` Jens Lehmann
  1 sibling, 1 reply; 5+ messages in thread
From: brian m. carlson @ 2013-08-17 17:25 UTC (permalink / raw)
  To: git

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 <sandals@crustytoothpaste.net>
---
 git-submodule.sh  | 7 +++++++
 t/t7508-status.sh | 4 ++--
 2 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/git-submodule.sh b/git-submodule.sh
index 38520db..c1ba0f8 100755
--- a/git-submodule.sh
+++ b/git-submodule.sh
@@ -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.
+			if test -n $for_status
+			then
+				name=$(module_name "$sm_path")
+				ignore_config=$(get_submodule_config "$name" ignore none)
+				test $status != A -a $ignore_config = all && continue
+			fi
 			# Also show added or modified modules which are checked out
 			GIT_DIR="$sm_path/.git" git-rev-parse --git-dir >/dev/null 2>&1 &&
 			echo "$sm_path"
diff --git a/t/t7508-status.sh b/t/t7508-status.sh
index ac3d0fe..fb89fb9 100755
--- a/t/t7508-status.sh
+++ b/t/t7508-status.sh
@@ -1316,7 +1316,7 @@ test_expect_success "--ignore-submodules=all suppresses submodule summary" '
 	test_i18ncmp expect output
 '
 
-test_expect_failure '.gitmodules ignore=all suppresses submodule summary' '
+test_expect_success '.gitmodules ignore=all suppresses submodule summary' '
 	git config --add -f .gitmodules submodule.subname.ignore all &&
 	git config --add -f .gitmodules submodule.subname.path sm &&
 	git status > output &&
@@ -1324,7 +1324,7 @@ test_expect_failure '.gitmodules ignore=all suppresses submodule summary' '
 	git config -f .gitmodules  --remove-section submodule.subname
 '
 
-test_expect_failure '.git/config ignore=all suppresses submodule summary' '
+test_expect_success '.git/config ignore=all suppresses submodule summary' '
 	git config --add -f .gitmodules submodule.subname.ignore none &&
 	git config --add -f .gitmodules submodule.subname.path sm &&
 	git config --add submodule.subname.ignore all &&
-- 
1.8.4.rc2.564.g10ce5ae

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH v2 1/2] submodule: fix confusing variable name
  2013-08-17 17:25 ` [PATCH v2 1/2] submodule: fix confusing variable name brian m. carlson
@ 2013-08-19 21:09   ` Jens Lehmann
  0 siblings, 0 replies; 5+ messages in thread
From: Jens Lehmann @ 2013-08-19 21:09 UTC (permalink / raw)
  To: brian m. carlson; +Cc: git

Am 17.08.2013 19:25, schrieb brian m. carlson:
> 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 <sandals@crustytoothpaste.net>

Thanks, this one is looking good to me.

Acked-by: Jens Lehmann <Jens.Lehmann@web.de>

> ---
>  git-submodule.sh | 8 ++++----
>  1 file changed, 4 insertions(+), 4 deletions(-)
> 
> diff --git a/git-submodule.sh b/git-submodule.sh
> index 2979197..38520db 100755
> --- a/git-submodule.sh
> +++ b/git-submodule.sh
> @@ -1032,13 +1032,13 @@ cmd_summary() {
>  	# Get modified modules cared by user
>  	modules=$(git $diff_cmd $cached --ignore-submodules=dirty --raw $head -- "$@" |
>  		sane_egrep '^:([0-7]* )?160000' |
> -		while read mod_src mod_dst sha1_src sha1_dst status name
> +		while read mod_src mod_dst sha1_src sha1_dst status sm_path
>  		do
>  			# 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/null 2>&1 &&
> -			echo "$name"
> +			GIT_DIR="$sm_path/.git" git-rev-parse --git-dir >/dev/null 2>&1 &&
> +			echo "$sm_path"
>  		done
>  	)
>  
> 

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH v2 2/2] submodule: don't print status output with ignore=all
  2013-08-17 17:25 ` [PATCH v2 2/2] submodule: don't print status output with ignore=all brian m. carlson
@ 2013-08-19 21:14   ` Jens Lehmann
  0 siblings, 0 replies; 5+ messages in thread
From: Jens Lehmann @ 2013-08-19 21:14 UTC (permalink / raw)
  To: brian m. carlson; +Cc: git

Am 17.08.2013 19:25, schrieb brian m. carlson:
> 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 <Jens.Lehmann@web.de>

> Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
> ---
>  git-submodule.sh  | 7 +++++++
>  t/t7508-status.sh | 4 ++--
>  2 files changed, 9 insertions(+), 2 deletions(-)
> 
> diff --git a/git-submodule.sh b/git-submodule.sh
> index 38520db..c1ba0f8 100755
> --- a/git-submodule.sh
> +++ b/git-submodule.sh
> @@ -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.
> +			if test -n $for_status
> +			then
> +				name=$(module_name "$sm_path")
> +				ignore_config=$(get_submodule_config "$name" ignore none)
> +				test $status != A -a $ignore_config = all && continue
> +			fi
>  			# Also show added or modified modules which are checked out
>  			GIT_DIR="$sm_path/.git" git-rev-parse --git-dir >/dev/null 2>&1 &&
>  			echo "$sm_path"
> diff --git a/t/t7508-status.sh b/t/t7508-status.sh
> index ac3d0fe..fb89fb9 100755
> --- a/t/t7508-status.sh
> +++ b/t/t7508-status.sh
> @@ -1316,7 +1316,7 @@ test_expect_success "--ignore-submodules=all suppresses submodule summary" '
>  	test_i18ncmp expect output
>  '
>  
> -test_expect_failure '.gitmodules ignore=all suppresses submodule summary' '
> +test_expect_success '.gitmodules ignore=all suppresses submodule summary' '
>  	git config --add -f .gitmodules submodule.subname.ignore all &&
>  	git config --add -f .gitmodules submodule.subname.path sm &&
>  	git status > output &&
> @@ -1324,7 +1324,7 @@ test_expect_failure '.gitmodules ignore=all suppresses submodule summary' '
>  	git config -f .gitmodules  --remove-section submodule.subname
>  '
>  
> -test_expect_failure '.git/config ignore=all suppresses submodule summary' '
> +test_expect_success '.git/config ignore=all suppresses submodule summary' '
>  	git config --add -f .gitmodules submodule.subname.ignore none &&
>  	git config --add -f .gitmodules submodule.subname.path sm &&
>  	git config --add submodule.subname.ignore all &&
> 

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2013-08-19 21:14 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-08-17 17:25 [PATCH v2 0/2] Don't print status output with submodule.<name>.ignore=all brian m. carlson
2013-08-17 17:25 ` [PATCH v2 1/2] submodule: fix confusing variable name brian m. carlson
2013-08-19 21:09   ` Jens Lehmann
2013-08-17 17:25 ` [PATCH v2 2/2] submodule: don't print status output with ignore=all brian m. carlson
2013-08-19 21:14   ` Jens Lehmann

Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).