git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jens Lehmann <Jens.Lehmann@web.de>
To: "brian m. carlson" <sandals@crustytoothpaste.net>
Cc: git@vger.kernel.org, jrnieder@gmail.com, judge.packham@gmail.com,
	gitster@pobox.com, Matthieu Moy <Matthieu.Moy@grenoble-inp.fr>
Subject: Re: [PATCH v3 2/2] submodule: don't print status output with ignore=all
Date: Tue, 03 Sep 2013 21:17:07 +0200	[thread overview]
Message-ID: <522635B3.5050306@web.de> (raw)
In-Reply-To: <1378066009-1017855-3-git-send-email-sandals@crustytoothpaste.net>

Am 01.09.2013 22:06, 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.
> 
> Tests are included which verify that this change has no effect on git submodule
> summary without the --for-status option.

Thanks, that fixes the bug Matthieu noticed which is now tested for.

I only have some nits concerning the new tests, please see below.

> Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
> ---
>  git-submodule.sh             |  7 +++++++
>  t/t7401-submodule-summary.sh | 30 ++++++++++++++++++++++++++++++
>  t/t7508-status.sh            |  4 ++--
>  3 files changed, 39 insertions(+), 2 deletions(-)
> 
> diff --git a/git-submodule.sh b/git-submodule.sh
> index 38520db..004b21c 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/t7401-submodule-summary.sh b/t/t7401-submodule-summary.sh
> index ac2434c..ca9441e 100755
> --- a/t/t7401-submodule-summary.sh
> +++ b/t/t7401-submodule-summary.sh
> @@ -104,6 +104,36 @@ EOF
>  	test_cmp expected actual
>  "
>  
> +test_expect_success '.gitmodules ignore=all has no effect' "
> +	git config --add -f .gitmodules submodule.sm1.ignore all &&
> +	git config --add -f .gitmodules submodule.sm1.path sm1 &&
> +	git submodule summary >actual &&
> +	cat >expected <<-EOF &&
> +* sm1 $head1...$head2 (1):
> +  > Add foo3
> +
> +EOF
> +	test_cmp expected actual &&
> +	git config -f .gitmodules --remove-section submodule.sm1
> +"
> +
> +test_expect_success '.git/config ignore=all has no effect' "
> +	git config --add -f .gitmodules submodule.sm1.ignore none &&
> +	git config --add -f .gitmodules submodule.sm1.path sm1 &&
> +	git config --add submodule.sm1.ignore all &&
> +	git config --add submodule.sm1.path sm1 &&
> +	git submodule summary >actual &&
> +	cat >expected <<-EOF &&
> +* sm1 $head1...$head2 (1):
> +  > Add foo3
> +
> +EOF
> +	test_cmp expected actual &&
> +	git config --remove-section submodule.sm1 &&
> +	git config -f .gitmodules --remove-section submodule.sm1
> +"
> +
> +
>  commit_file sm1 &&
>  head3=$(
>  	cd sm1 &&

I think we should do both tests in one go: just turn on all ignore
options and test against that. Additionally we should also set
diff.ignoreSubmodules too, while there is no need to set the path
in .git/config. And I believe we can drop the --add option from
the config command, so I'd propose something like this:

-------------------------8<---------------------------
diff --git a/t/t7401-submodule-summary.sh b/t/t7401-submodule-summary.sh
index ac2434c..81ae7c9 100755
--- a/t/t7401-submodule-summary.sh
+++ b/t/t7401-submodule-summary.sh
@@ -104,6 +104,24 @@ EOF
 	test_cmp expected actual
 "

+test_expect_success 'no ignore=all setting has any effect' "
+	git config -f .gitmodules submodule.sm1.path sm1 &&
+	git config -f .gitmodules submodule.sm1.ignore all &&
+	git config submodule.sm1.ignore all &&
+	git config diff.ignoreSubmodules all &&
+	git submodule summary >actual &&
+	cat >expected <<-EOF &&
+* sm1 $head1...$head2 (1):
+  > Add foo3
+
+EOF
+	test_cmp expected actual &&
+	git config --unset diff.ignoreSubmodules &&
+	git config --remove-section submodule.sm1 &&
+	git config -f .gitmodules --remove-section submodule.sm1
+"
+
+
 commit_file sm1 &&
 head3=$(
 	cd sm1 &&
-------------------------8<---------------------------

> 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 &&
> 

  reply	other threads:[~2013-09-03 19:17 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-09-01 20:06 [PATCH v3 0/2] submodule: Don't print status output with submodule.<name>.ignore=all brian m. carlson
2013-09-01 20:06 ` [PATCH v3 1/2] submodule: fix confusing variable name brian m. carlson
2013-09-01 20:06 ` [PATCH v3 2/2] submodule: don't print status output with ignore=all brian m. carlson
2013-09-03 19:17   ` Jens Lehmann [this message]
2013-09-03 19:53   ` Junio C Hamano
2013-09-04 20:01     ` Jens Lehmann
2013-09-04 20:57       ` Junio C Hamano
2013-09-04 21:26         ` Jens Lehmann
2013-09-04  6:31   ` Matthieu Moy
2013-09-04 20:40     ` Jens Lehmann
2013-09-05  6:30       ` Matthieu Moy
2013-09-05  8:05         ` Matthieu Moy
2013-09-06  0:19         ` brian m. carlson

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=522635B3.5050306@web.de \
    --to=jens.lehmann@web.de \
    --cc=Matthieu.Moy@grenoble-inp.fr \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=jrnieder@gmail.com \
    --cc=judge.packham@gmail.com \
    --cc=sandals@crustytoothpaste.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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 NNTP newsgroup(s).