Merge branch 'kb/maint-submodule-savearg'
authorJunio C Hamano <gitster@pobox.com>
Wed, 17 Nov 2010 23:02:12 +0000 (15:02 -0800)
committerJunio C Hamano <gitster@pobox.com>
Wed, 17 Nov 2010 23:02:12 +0000 (15:02 -0800)
* kb/maint-submodule-savearg:
submodule: only preserve flags across recursive status/update invocations
submodule: preserve all arguments exactly when recursing

1  2 
git-submodule.sh
diff --combined git-submodule.sh
index c291eed59cca35d4b08285133acaca29bd80d372,4fd8982894a5d135cac4b27b5b42f57c72228e7e..33bc41f069d9807285db6630132e14f8c518ce47
@@@ -374,41 -374,35 +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
                        ;;
                --)
                        break
                        ;;
                esac
+               orig_flags="$orig_flags $(git rev-parse --sq-quote "$1")"
+               shift
        done
  
        if test -n "$init"
  
                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 +729,7 @@@ cmd_summary() 
  cmd_status()
  {
        # parse $args after "submodule ... status".
-       orig_args="$@"
+       orig_flags=
        while test $# -ne 0
        do
                case "$1" in
                        break
                        ;;
                esac
+               orig_flags="$orig_flags $(git rev-parse --sq-quote "$1")"
                shift
        done
  
                                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
@@@ -836,12 -833,11 +833,12 @@@ cmd_sync(
                        ;;
                esac
  
 +              say "Synchronizing submodule url for '$name'"
 +              git config submodule."$name".url "$url"
 +
                if test -e "$path"/.git
                then
                (
 -                      say "Synchronizing submodule url for '$name'"
 -                      git config submodule."$name".url "$url"
                        clear_local_git_env
                        cd "$path"
                        remote=$(get_default_remote)