From: Junio C Hamano Date: Tue, 15 Apr 2008 00:39:44 GMT Subject: Re: [PATCH] git-submodule - possibly use remote branch to describe a module Message-ID: <7viqyk6je7.fsf@gitster.siamese.dyndns.org> In-Reply-To: <1208217154-992-1-git-send-email-mlevedahl@gmail.com> Mark Levedahl writes: > Absent user intervention, git-submodule will maintain submodules as > headless checkouts of remote branches: such checkouts cannot be described > with reference to any local branch. So, allow describing the submodule > using remote branches before falling back on just using the commit id. > > Signed-off-by: Mark Levedahl > --- > git-submodule.sh | 3 ++- > 1 files changed, 2 insertions(+), 1 deletions(-) > > diff --git a/git-submodule.sh b/git-submodule.sh > index 28509ea..af195a7 100755 > --- a/git-submodule.sh > +++ b/git-submodule.sh > @@ -389,7 +389,8 @@ set_name_rev () { > cd "$1" && { > git describe "$2" 2>/dev/null || > git describe --tags "$2" 2>/dev/null || > - git describe --contains --tags --always "$2" > + git describe --contains "$2" 2>/dev/null || > + git describe --all --always "$2" > } > ) ) > test -z "$revname" || revname=" ($revname)" I think the new fallback sequence makes sense, but your explanation made sense for me only after reading it two and half times. - The original sequence ended with "--contains --always" which always succeeded but with an abbrevated object name. You removed --always from it so that you can add a better last-ditch effort that uses remote references. Side note. Removal of --tags from it is not justified in your log message. It is sort of obvious if you think about it, though... - The new one at the end uses --all because the HEAD is likely to be describable with remote references, and without --all remote reference namespace is not searched for a match.