Re: [PATCH] git-submodule.sh: avoid "test <cond> -a/-o <cond>"
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Jun 10, 2014, 17:03 UTC
- Message-ID
- <xmqqd2egae9f.fsf@gitster.dls.corp.google.com>
- In-Reply-To
- <1402418594-1377-1-git-send-email-gitter.spiros@gmail.com>
Elia Pinto <gitter.spiros@gmail.com> writes:
Show 6 quoted lines
> @@ -832,7 +832,7 @@ Maybe you want to use 'update --init'?")" > continue > fi > > - if ! test -d "$sm_path"/.git -o -f "$sm_path"/.git > + if ! test -d "$sm_path"/.git && test -f "$sm_path"/.git
Hmmmm. Is the above correct?
$ if ! false && true; then echo true; else echo false; fi
trueIn other words, "! cmd1 && cmd2" parses not as "! (cmd1 && cmd2)" but as "(! cmd1) && cmd2".
It almost makes me wonder if the code may become simpler if we did it the way in the attached. That is, "if $sm_path/.git is there (whether as an embedded repository, or a file pointing to a repository elsewhere), then grab its HEAD, otherwise $sm_path is a submodule that hasn't been run 'submodule init' on, so run the whole nine yards starting from module_clone".
Such a rewrite is not within the scope of this series, so
if ! test -d "$sm_path/.git" && ! test -f "$sm_path/.git"
may be the closest to the original intent, I would think.
git-submodule.sh | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/git-submodule.sh b/git-submodule.sh index e146b83..018f1bb 100755 --- a/git-submodule.sh +++ b/git-submodule.sh @@ -832,15 +832,15 @@ Maybe you want to use 'update --init'?")" continue fi - if ! test -d "$sm_path"/.git -o -f "$sm_path"/.git + if test -e "$sm_path/.git" then - module_clone "$sm_path" "$name" "$url" "$reference" "$depth" || exit - cloned_modules="$cloned_modules;$name" - subsha1= - else subsha1=$(clear_local_git_env; cd "$sm_path" && git rev-parse --verify HEAD) || die "$(eval_gettext "Unable to find current revision in submodule path '\$displaypath'")" + else + module_clone "$sm_path" "$name" "$url" "$reference" "$depth" || exit + cloned_modules="$cloned_modules;$name" + subsha1= fi if test -n "$remote"