From 49ad3cfa67145a71644d7832ed20c2a2b0620d15 Mon Sep 17 00:00:00 2001 From: Daniel P. Berrange Date: Mon, 30 Oct 2017 09:29:29 +0100 Subject: build: delay check for empty git submodule list We short circuit the git submodule update when passed an empty module list. This accidentally causes the 'status' command to write to the status file. The test needs to be delayed into the individual commands to avoid this premature writing of the status file. Tested-by: Philippe Mathieu-Daudé Reviewed-by: Eric Blake Signed-off-by: Daniel P. Berrange --- scripts/git-submodule.sh | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) (limited to 'scripts/git-submodule.sh') diff --git a/scripts/git-submodule.sh b/scripts/git-submodule.sh index 3683bc9a04..030617b4ac 100755 --- a/scripts/git-submodule.sh +++ b/scripts/git-submodule.sh @@ -33,12 +33,6 @@ error() { exit 1 } -if test -z "$maybe_modules" -then - test -e $substat || touch $substat - exit 0 -fi - modules="" for m in $maybe_modules do @@ -51,7 +45,7 @@ do fi done -if ! test -e ".git" +if test -n "$maybe_modules" && ! test -e ".git" then echo "$0: unexpectedly called with submodules but no git checkout exists" exit 1 @@ -59,6 +53,11 @@ fi case "$command" in status) + if test -z "$maybe_modules" + then + test -s ${substat} && exit 1 || exit 0 + fi + test -f "$substat" || exit 1 CURSTATUS=`$GIT submodule status $modules` OLDSTATUS=`cat $substat` @@ -66,6 +65,12 @@ status) exit $? ;; update) + if test -z "$maybe_modules" + then + test -e $substat || touch $substat + exit 0 + fi + $GIT submodule update --init $modules 1>/dev/null test $? -ne 0 && error "failed to update modules" -- cgit v1.2.3-55-g7522