Junio C Hamano <gitster@xxxxxxxxx> writes: > Jeff King <peff@xxxxxxxx> writes: > >> I did see it on my debian unstable box with with dash as /bin/sh (though > > 3deea89 (submodule summary: Don't barf when invoked in an empty repo, > 2010-02-16) looks broken. It shifts $1 unconditionally when: > > - "git submodule summary", no arguments given and defaults to HEAD which > is _not_ unborn (we shouldn't shift in this case); > > - "git submodule summary HEAD path...", which is not unborn (we should shift); > > - "git submodule summary path...", defaults to HEAD which is _not_ unborn > (we shouldn't shift). IOW, shouldn't the code look more like this? if test $# != 0 && head=$(git rev-parse -q --verify "$1") then shift else git rev-parse -q --verify HEAD >/dev/null || return 0 head=HEAD fi That is, if a specific version might be there, we see if it is a version and shift it out only if that is the case. Otherwise we default to HEAD but special case for an unborn HEAD (and report success). git-submodule.sh | 9 +++------ 1 files changed, 3 insertions(+), 6 deletions(-) diff --git a/git-submodule.sh b/git-submodule.sh index 5869c00..bd3a8d4 100755 --- a/git-submodule.sh +++ b/git-submodule.sh @@ -553,15 +553,12 @@ cmd_summary() { test $summary_limit = 0 && return - if rev=$(git rev-parse -q --verify --default HEAD ${1+"$1"}) + if test $# != 0 && head=$(git rev-parse -q --verify "$1") then - head=$rev shift - elif test -z "$1" -o "$1" = "HEAD" - then - return else - head="HEAD" + git rev-parse -q --verify HEAD >/dev/null || return 0 + head=HEAD fi if [ -n "$files" ] -- 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