On Thursday 20 August 2009, Junio C Hamano wrote: > Johan Herland <johan@xxxxxxxxxxx> writes: > >> - $sub1sha1 sub1 (${sub1sha1:0:7}) > >> - $sub2sha1 sub2 (${sub1sha1:0:7}) > >> + $sub1sha1 sub1 ($(echo $sub1sha1 | cut -c 1-7)) > >> + $sub2sha1 sub2 ($(echo $sub1sha1 | cut -c 1-7)) > > > > Typo (both in the original, and the patch), should be: > > $sub2sha1 sub2 ($(echo $sub2sha1 | cut -c 1-7)) > > > >> $sub3sha1 sub3 (heads/master) > >> EOF > > > > Otherwise: > > > > Acked-by: Johan Herland <johan@xxxxxxxxxxx> > > Hmm, what does the command use to shorten these object names? It may be > safer and more correct to use "rev-parse --short" in case these object > names were ambigous in their first 7 hexdigits. git submodule status (which is what we're testing here) uses 'git describe' to generate the short object name (see set_name_rev in git-submodule.sh). In this case, it falls back to 'git describe --all --always', which calls find_unique_abbrev() on the SHA1. 'git rev-parse --short' ends up calling the same find_unique_abbrev(), so I guess it is better to use it here. Try this instead: From: Johan Herland <johan@xxxxxxxxxxx> Subject: [PATCH] t7407: Use 'rev-parse --short' rather than bash's substring expansion notation The substring expansion notation is a bashism that we have not so far adopted. Use 'git rev-parse --short' instead, as this also handles the case where the unique abbreviation is longer than 7 characters. Suggested-by: Brandon Casey <casey@xxxxxxxxxxxxxxx> Signed-off-by: Johan Herland <johan@xxxxxxxxxxx> --- t/t7407-submodule-foreach.sh | 6 ++++-- 1 files changed, 4 insertions(+), 2 deletions(-) diff --git a/t/t7407-submodule-foreach.sh b/t/t7407-submodule-foreach.sh index 25ec281..2a52775 100755 --- a/t/t7407-submodule-foreach.sh +++ b/t/t7407-submodule-foreach.sh @@ -201,14 +201,16 @@ submodulesha1=$(cd clone3/nested1/nested2/nested3/submodule && git rev-parse HEA sub1sha1=$(cd clone3/sub1 && git rev-parse HEAD) sub2sha1=$(cd clone3/sub2 && git rev-parse HEAD) sub3sha1=$(cd clone3/sub3 && git rev-parse HEAD) +sub1sha1_short=$(cd clone3/sub1 && git rev-parse --short HEAD) +sub2sha1_short=$(cd clone3/sub2 && git rev-parse --short HEAD) cat > expect <<EOF $nested1sha1 nested1 (heads/master) $nested2sha1 nested1/nested2 (heads/master) $nested3sha1 nested1/nested2/nested3 (heads/master) $submodulesha1 nested1/nested2/nested3/submodule (heads/master) - $sub1sha1 sub1 (${sub1sha1:0:7}) - $sub2sha1 sub2 (${sub1sha1:0:7}) + $sub1sha1 sub1 ($sub1sha1_short) + $sub2sha1 sub2 ($sub2sha1_short) $sub3sha1 sub3 (heads/master) EOF -- 1.6.4.304.g1365c.dirty -- Johan Herland, <johan@xxxxxxxxxxx> www.herland.net -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html