Re: [PATCH] git-submodule.sh: avoid "test <cond> -a/-o <cond>"
From: Eric Sunshine <hidden>
Date: 2016-06-15 23:01:34
On Tue, Jun 10, 2014 at 12:43 PM, Elia Pinto [off-list ref] wrote:
quoted hunk ↗ jump to hunk
The construct is error-prone; "test" being built-in in most modern shells, the reason to avoid "test <cond> && test <cond>" spawning one extra process by using a single "test <cond> -a <cond>" no longer exists. Signed-off-by: Elia Pinto <redacted> --- This is the fifth revision. Change based on Junio bugfix and better rewrite of the case condition http://permalink.gmane.org/gmane.comp.version-control.git/251198 I dropped also the echo -> printf replacement for doing it in another patch. Pass all the t/*submodule* tests. Finally ! :=) Thank you all very much and sorry for the mess. git-submodule.sh | 32 ++++++++++++++++++++------------ 1 file changed, 20 insertions(+), 12 deletions(-)diff --git a/git-submodule.sh b/git-submodule.sh index e146b83..e128a4a 100755 --- a/git-submodule.sh +++ b/git-submodule.sh while read mod_src mod_dst sha1_src sha1_dst status sm_path do # Always show modules deleted or type-changed (blob<->module) - test $status = D -o $status = T && echo "$sm_path" && continue + if test "$status" = D || test "$status" = T + then + echo "$sm_path" &&
Unnecessary &&.
+ continue
+ fi
# Respect the ignore setting for --for-status.
if test -n "$for_status"
then
name=$(module_name "$sm_path")
ignore_config=$(get_submodule_config "$name" ignore none)
- test $status != A -a $ignore_config = all && continue
+ test $status != A && test $ignore_config = all && continue
fi
# Also show added or modified modules which are checked out
GIT_DIR="$sm_path/.git" git-rev-parse --git-dir >/dev/null 2>&1 &&