summaryrefslogtreecommitdiff
path: root/git-submodule.sh
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2010-11-17 23:02:12 (GMT)
committerJunio C Hamano <gitster@pobox.com>2010-11-17 23:02:12 (GMT)
commitaef5c38b59e111892cfb95cfafbef2c11cc69b4b (patch)
tree417ce8eccf8adf937ced6a7d81e345aee996b87c /git-submodule.sh
parent6f49ed6153be9f37d48bdec4a036a8b8a5629590 (diff)
parent98dbe63dbcb44218e23ccc92e1491c36b2e31945 (diff)
downloadgit-aef5c38b59e111892cfb95cfafbef2c11cc69b4b.zip
git-aef5c38b59e111892cfb95cfafbef2c11cc69b4b.tar.gz
git-aef5c38b59e111892cfb95cfafbef2c11cc69b4b.tar.bz2
Merge branch 'kb/maint-submodule-savearg'
* kb/maint-submodule-savearg: submodule: only preserve flags across recursive status/update invocations submodule: preserve all arguments exactly when recursing
Diffstat (limited to 'git-submodule.sh')
-rwxr-xr-xgit-submodule.sh21
1 files changed, 9 insertions, 12 deletions
diff --git a/git-submodule.sh b/git-submodule.sh
index c291eed..33bc41f 100755
--- a/git-submodule.sh
+++ b/git-submodule.sh
@@ -374,41 +374,35 @@ cmd_init()
cmd_update()
{
# parse $args after "submodule ... update".
- orig_args="$@"
+ orig_flags=
while test $# -ne 0
do
case "$1" in
-q|--quiet)
- shift
GIT_QUIET=1
;;
-i|--init)
init=1
- shift
;;
-N|--no-fetch)
- shift
nofetch=1
;;
-r|--rebase)
- shift
update="rebase"
;;
--reference)
case "$2" in '') usage ;; esac
reference="--reference=$2"
- shift 2
+ orig_flags="$orig_flags $(git rev-parse --sq-quote "$1")"
+ shift
;;
--reference=*)
reference="$1"
- shift
;;
-m|--merge)
- shift
update="merge"
;;
--recursive)
- shift
recursive=1
;;
--)
@@ -422,6 +416,8 @@ cmd_update()
break
;;
esac
+ orig_flags="$orig_flags $(git rev-parse --sq-quote "$1")"
+ shift
done
if test -n "$init"
@@ -500,7 +496,7 @@ cmd_update()
if test -n "$recursive"
then
- (clear_local_git_env; cd "$path" && cmd_update $orig_args) ||
+ (clear_local_git_env; cd "$path" && eval cmd_update "$orig_flags") ||
die "Failed to recurse into submodule path '$path'"
fi
done
@@ -733,7 +729,7 @@ cmd_summary() {
cmd_status()
{
# parse $args after "submodule ... status".
- orig_args="$@"
+ orig_flags=
while test $# -ne 0
do
case "$1" in
@@ -757,6 +753,7 @@ cmd_status()
break
;;
esac
+ orig_flags="$orig_flags $(git rev-parse --sq-quote "$1")"
shift
done
@@ -790,7 +787,7 @@ cmd_status()
prefix="$displaypath/"
clear_local_git_env
cd "$path" &&
- cmd_status $orig_args
+ eval cmd_status "$orig_args"
) ||
die "Failed to recurse into submodule path '$path'"
fi