From: Jens Lehmann <Jens.Lehmann@web.de>
To: "brian m. carlson" <sandals@crustytoothpaste.net>
Cc: Chris Packham <judge.packham@gmail.com>,
git@vger.kernel.org, gitster@pobox.com
Subject: Re: [PATCH v2] submodule: prevent warning in summary output
Date: Mon, 26 Aug 2013 21:59:44 +0200 [thread overview]
Message-ID: <521BB3B0.4060908@web.de> (raw)
In-Reply-To: <521B114B.2080709@gmail.com>
Am 26.08.2013 10:26, schrieb Chris Packham:
> Hi Brian,
>
> Sorry for the delay.
Same here.
> On 20/08/13 12:26, brian m. carlson wrote:
>> When git submodule summary is run and there is a deleted submodule, there is an
>> warning from git rev-parse:
>>
>> fatal: Not a git repository: '.vim/pathogen/.git'
>>
>> Silence this warning, since it is fully expected that a deleted submodule will
>> not be a git repository.
>>
>> Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
>> ---
>>
>> I hesitated to add the test for $status because it will end up having no effect
>> since we exclude that case later. However, for correctness, I included it.
>>
>> git-submodule.sh | 3 +++
>> 1 file changed, 3 insertions(+)
>>
>> diff --git a/git-submodule.sh b/git-submodule.sh
>> index 2979197..eec3135 100755
>> --- a/git-submodule.sh
>> +++ b/git-submodule.sh
>> @@ -1070,7 +1070,10 @@ cmd_summary() {
>> missing_src=
>> missing_dst=
>>
>> + test $status = D && missing_src=t
>
> I tend to agree with you that this line is redundant. I'm not sure that
> it's what Jens was looking for in v1.
Unfortunately you'll get another two "fatal: Not a git repository:" errors
when you drop this. Further down a "git rev-list" and a "git log" are run
on the submodule unless one of the "missing" variables is set. But this
doesn't feel quite right as we are misusing the missing_src variable for
something else here ...
>> +
>> test $mod_src = 160000 &&
>> + test -e "$name/.git" &&
>> ! GIT_DIR="$name/.git" git-rev-parse -q --verify $sha1_src^0 >/dev/null &&
>> missing_src=t
>>
>
> This part looks good to me.
I agree that this is much better than just piping all errors to /dev/null,
but I was thinking of
+ test $status != D &&
instead of
+ test -e "$name/.git" &&
above to still catch errors where the submodule repo is gone but the
submodule wasn't deleted.
The following diff silences all "fatal: Not a git repository:" errors for
me using the status variable. But now four tests in t7401 are failing
because they disagree about an empty line and/or the "(0)" at the end of
a line. But this could be a good starting point (and includes a test for
what we are trying to fix here :-).
----------------------------------8<-------------------------
diff --git a/git-submodule.sh b/git-submodule.sh
index 2979197..69f6a1b 100755
--- a/git-submodule.sh
+++ b/git-submodule.sh
@@ -1071,6 +1071,7 @@ cmd_summary() {
missing_dst=
test $mod_src = 160000 &&
+ test $status != D &&
! GIT_DIR="$name/.git" git-rev-parse -q --verify $sha1_src^0 >/dev/null &&
missing_src=t
@@ -1103,6 +1104,7 @@ cmd_summary() {
else
range=$sha1_dst
fi
+ test $status != D &&
GIT_DIR="$name/.git" \
git rev-list --first-parent $range -- | wc -l
)
@@ -1143,6 +1145,7 @@ cmd_summary() {
GIT_DIR="$name/.git" \
git log --pretty='format: > %s' -1 $sha1_dst
else
+ test $status != D &&
GIT_DIR="$name/.git" \
git log --pretty='format: < %s' -1 $sha1_src
fi
diff --git a/t/t7401-submodule-summary.sh b/t/t7401-submodule-summary.sh
index ac2434c..66c73f6 100755
--- a/t/t7401-submodule-summary.sh
+++ b/t/t7401-submodule-summary.sh
@@ -215,12 +215,13 @@ EOF
commit_file sm1 &&
rm -rf sm1
test_expect_success 'deleted submodule' "
- git submodule summary >actual &&
+ git submodule summary >actual 2>err &&
cat >expected <<-EOF &&
* sm1 $head6...0000000:
EOF
- test_cmp expected actual
+ test_cmp expected actual &&
+ ! test -s err
"
test_create_repo sm2 &&
prev parent reply other threads:[~2013-08-26 19:59 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-08-20 0:26 [PATCH v2] submodule: prevent warning in summary output brian m. carlson
2013-08-26 8:26 ` Chris Packham
2013-08-26 19:59 ` Jens Lehmann [this message]
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=521BB3B0.4060908@web.de \
--to=jens.lehmann@web.de \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.