On Wed, Mar 03, 2010 at 12:32:11PM -0800, Junio C Hamano wrote: > 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: Yeah, I can confirm that the breakage was introduced there (and it looks like for bash, an extra "shift" is a failing command but doesn't make the shell barf, but for dash it is more serious, which explains why tests passed for you). > - "git submodule summary", no arguments given and defaults to HEAD which > is _not_ unborn (we shouldn't shift in this case); Yes, definitely a bug. > - "git submodule summary HEAD path...", which is not unborn (we should shift); Yes, and I think we do that part right. > - "git submodule summary path...", defaults to HEAD which is _not_ unborn > (we shouldn't shift). I don't think this is a problem. We do: git rev-parse -q --verify --default HEAD path and it correctly reports failure, so we never do the problematic shift. So I think we just need diff --git a/git-submodule.sh b/git-submodule.sh index 1ea4143..bf5ea50 100755 --- a/git-submodule.sh +++ b/git-submodule.sh @@ -556,7 +556,7 @@ cmd_summary() { if rev=$(git rev-parse -q --verify --default HEAD ${1+"$1"}) then head=$rev - shift + test -n "$1" && shift elif test -z "$1" -o "$1" = "HEAD" then return -Peff -- 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