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
This commit is contained in:
Junio C Hamano
2010-11-17 15:02:12 -08:00
2 changed files with 59 additions and 12 deletions

View File

@ -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