# [PATCH v3] git-submodule.sh: shorten submodule SHA-1s using rev-parse

4 messages from 2019-02-03 to 2019-02-04. Participants: Sven van Haastregt, Eric Sunshine, Junio C Hamano.
Thread: https://gitlist.dev/t/50390

## Sven van Haastregt, 2019-02-03 21:00

Subject: [PATCH v3] git-submodule.sh: shorten submodule SHA-1s using rev-parse
Message-ID: <20190203210027.13272-1-svenvh@gmail.com>
URL: https://gitlist.dev/e/20190203210027.13272-1-svenvh%40gmail.com

```
Until now, `git submodule summary` was always emitting 7-character
SHA-1s that have a higher chance of being ambiguous for larger
repositories.  Use `git rev-parse --short` instead, which will
determine suitable short SHA-1 lengths.

We cannot always rely on successfully invoking `git rev-parse` in the
submodule directory.  Keep the old method using `cut` as a fallback.

Signed-off-by: Sven van Haastregt <svenvh@gmail.com>
---

Differences since v2: Simplify code as suggested by Eric
Sunshine <sunshine@sunshineco.com> and suppress stderr.

 git-submodule.sh | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/git-submodule.sh b/git-submodule.sh
index 5e608f8bad..e26146e721 100755
--- a/git-submodule.sh
+++ b/git-submodule.sh
@@ -850,8 +850,11 @@ cmd_summary() {
 			;;
 		esac
 
-		sha1_abbr_src=$(echo $sha1_src | cut -c1-7)
-		sha1_abbr_dst=$(echo $sha1_dst | cut -c1-7)
+		sha1_abbr_src=$(GIT_DIR="$name/.git" git rev-parse --short $sha1_src 2>/dev/null ||
+			echo $sha1_src | cut -c1-7)
+		sha1_abbr_dst=$(GIT_DIR="$name/.git" git rev-parse --short $sha1_dst 2>/dev/null ||
+			echo $sha1_dst | cut -c1-7)
+
 		if test $status = T
 		then
 			blob="$(gettext "blob")"
-- 
2.20.1.dirty


```

## Eric Sunshine, 2019-02-03 21:28

Subject: Re: [PATCH v3] git-submodule.sh: shorten submodule SHA-1s using rev-parse
Message-ID: <CAPig+cQXuzMwZjHa3n+DwRFL3E76U8uAvhiFiC5S=B23f03Vnw@mail.gmail.com>
URL: https://gitlist.dev/e/CAPig%2BcQXuzMwZjHa3n%2BDwRFL3E76U8uAvhiFiC5S%3DB23f03Vnw%40mail.gmail.com
In-Reply-To: <20190203210027.13272-1-svenvh@gmail.com>

```
On Sun, Feb 3, 2019 at 4:01 PM Sven van Haastregt <svenvh@gmail.com> wrote:
> Until now, `git submodule summary` was always emitting 7-character
> SHA-1s that have a higher chance of being ambiguous for larger
> repositories.  Use `git rev-parse --short` instead, which will
> determine suitable short SHA-1 lengths.
>
> We cannot always rely on successfully invoking `git rev-parse` in the
> submodule directory.  Keep the old method using `cut` as a fallback.

Reviewers and future readers of this patch are left in the dark
regarding the circumstances in which git-rev-parse may fail in the
submodule directory. It would be helpful for the commit message to
explain this potential failure in enough detail for someone working in
this area in the future to understand any implications of changes to
this code.

> Signed-off-by: Sven van Haastregt <svenvh@gmail.com>
> ---
> Differences since v2: Simplify code as suggested by Eric
> Sunshine <sunshine@sunshineco.com> and suppress stderr.

This version looks better. Thanks.

```

## Junio C Hamano, 2019-02-04 18:47

Subject: Re: [PATCH v3] git-submodule.sh: shorten submodule SHA-1s using rev-parse
Message-ID: <xmqqftt3v1ah.fsf@gitster-ct.c.googlers.com>
URL: https://gitlist.dev/e/xmqqftt3v1ah.fsf%40gitster-ct.c.googlers.com
In-Reply-To: <CAPig+cQXuzMwZjHa3n+DwRFL3E76U8uAvhiFiC5S=B23f03Vnw@mail.gmail.com>

```
Eric Sunshine <sunshine@sunshineco.com> writes:

> On Sun, Feb 3, 2019 at 4:01 PM Sven van Haastregt <svenvh@gmail.com> wrote:
>> Until now, `git submodule summary` was always emitting 7-character
>> SHA-1s that have a higher chance of being ambiguous for larger
>> repositories.  Use `git rev-parse --short` instead, which will
>> determine suitable short SHA-1 lengths.
>>
>> We cannot always rely on successfully invoking `git rev-parse` in the
>> submodule directory.  Keep the old method using `cut` as a fallback.
>
> Reviewers and future readers of this patch are left in the dark
> regarding the circumstances in which git-rev-parse may fail in the
> submodule directory. It would be helpful for the commit message to
> explain this potential failure in enough detail for someone working in
> this area in the future to understand any implications of changes to
> this code.

Replace that problematic sentence with something like

	As a submodule may not be initialized with "submodule init"
	or not cloned, `git rev-parse` may not work in it yet; as a
	fallback, use the original method of cutting at 7 hexdigits.

perhaps?


>
>> Signed-off-by: Sven van Haastregt <svenvh@gmail.com>
>> ---
>> Differences since v2: Simplify code as suggested by Eric
>> Sunshine <sunshine@sunshineco.com> and suppress stderr.
>
> This version looks better. Thanks.

```

## Eric Sunshine, 2019-02-04 19:01

Subject: Re: [PATCH v3] git-submodule.sh: shorten submodule SHA-1s using rev-parse
Message-ID: <CAPig+cQezC8_T=pms=XY71+9pP2WgdvdyiF9+UwarFB8sXo+Tw@mail.gmail.com>
URL: https://gitlist.dev/e/CAPig%2BcQezC8_T%3Dpms%3DXY71%2B9pP2WgdvdyiF9%2BUwarFB8sXo%2BTw%40mail.gmail.com
In-Reply-To: <xmqqftt3v1ah.fsf@gitster-ct.c.googlers.com>

```
On Mon, Feb 4, 2019 at 1:47 PM Junio C Hamano <gitster@pobox.com> wrote:
> Eric Sunshine <sunshine@sunshineco.com> writes:
> > On Sun, Feb 3, 2019 at 4:01 PM Sven van Haastregt <svenvh@gmail.com> wrote:
> >> We cannot always rely on successfully invoking `git rev-parse` in the
> >> submodule directory.  Keep the old method using `cut` as a fallback.
> >
> > Reviewers and future readers of this patch are left in the dark
> > regarding the circumstances in which git-rev-parse may fail in the
> > submodule directory. It would be helpful for the commit message to
> > explain this potential failure in enough detail for someone working in
> > this area in the future to understand any implications of changes to
> > this code.
>
> Replace that problematic sentence with something like
>
>         As a submodule may not be initialized with "submodule init"
>         or not cloned, `git rev-parse` may not work in it yet; as a
>         fallback, use the original method of cutting at 7 hexdigits.
>
> perhaps?

That's better.

```
