Merge branch 'sb/submodule-misc-cleanups'
authorJunio C Hamano <gitster@pobox.com>
Mon, 20 Jun 2016 18:01:01 +0000 (11:01 -0700)
committerJunio C Hamano <gitster@pobox.com>
Mon, 20 Jun 2016 18:01:01 +0000 (11:01 -0700)
Minor simplification.

* sb/submodule-misc-cleanups:
submodule update: make use of the existing fetch_in_submodule function

1  2 
git-submodule.sh
diff --combined git-submodule.sh
index 7fe8a511b37a9705249132afedb57032fb65e86c,7698102b9c41cac6791304c2604e4b1b39bbe5b7..128f22ffb830870fd92751b9b4676f31b042a5e6
@@@ -46,6 -46,41 +46,6 @@@ prefix
  custom_name=
  depth=
  
 -# Resolve a path to be relative to another path.  This is intended for
 -# converting submodule paths when git-submodule is run in a subdirectory
 -# and only handles paths where the directory separator is '/'.
 -#
 -# The output is the first argument as a path relative to the second argument,
 -# which defaults to $wt_prefix if it is omitted.
 -relative_path ()
 -{
 -      local target curdir result
 -      target=$1
 -      curdir=${2-$wt_prefix}
 -      curdir=${curdir%/}
 -      result=
 -
 -      while test -n "$curdir"
 -      do
 -              case "$target" in
 -              "$curdir/"*)
 -                      target=${target#"$curdir"/}
 -                      break
 -                      ;;
 -              esac
 -
 -              result="${result}../"
 -              if test "$curdir" = "${curdir%/*}"
 -              then
 -                      curdir=
 -              else
 -                      curdir="${curdir%/*}"
 -              fi
 -      done
 -
 -      echo "$result$target"
 -}
 -
  die_if_unmatched ()
  {
        if test "$1" = "#unmatched"
@@@ -310,23 -345,20 +310,23 @@@ cmd_foreach(
        # command in the subshell (and a recursive call to this function)
        exec 3<&0
  
 -      git submodule--helper list --prefix "$wt_prefix"|
 +      {
 +              git submodule--helper list --prefix "$wt_prefix" ||
 +              echo "#unmatched"
 +      } |
        while read mode sha1 stage sm_path
        do
                die_if_unmatched "$mode"
                if test -e "$sm_path"/.git
                then
 -                      displaypath=$(relative_path "$prefix$sm_path")
 +                      displaypath=$(git submodule--helper relative-path "$prefix$sm_path" "$wt_prefix")
                        say "$(eval_gettext "Entering '\$displaypath'")"
                        name=$(git submodule--helper name "$sm_path")
                        (
                                prefix="$prefix$sm_path/"
                                sanitize_submodule_env
                                cd "$sm_path" &&
 -                              sm_path=$(relative_path "$sm_path") &&
 +                              sm_path=$(git submodule--helper relative-path "$sm_path" "$wt_prefix") &&
                                # we make $path available to scripts ...
                                path=$sm_path &&
                                if test $# -eq 1
@@@ -421,16 -453,13 +421,16 @@@ cmd_deinit(
                die "$(eval_gettext "Use '--all' if you really want to deinitialize all submodules")"
        fi
  
 -      git submodule--helper list --prefix "$wt_prefix" "$@" |
 +      {
 +              git submodule--helper list --prefix "$wt_prefix" "$@" ||
 +              echo "#unmatched"
 +      } |
        while read mode sha1 stage sm_path
        do
                die_if_unmatched "$mode"
                name=$(git submodule--helper name "$sm_path") || exit
  
 -              displaypath=$(relative_path "$sm_path")
 +              displaypath=$(git submodule--helper relative-path "$sm_path" "$wt_prefix")
  
                # Remove the submodule work tree (unless the user already did it)
                if test -d "$sm_path"
@@@ -594,7 -623,7 +594,7 @@@ cmd_update(
                        fi
                fi
  
 -              displaypath=$(relative_path "$prefix$sm_path")
 +              displaypath=$(git submodule--helper relative-path "$prefix$sm_path" "$wt_prefix")
  
                if test $just_cloned -eq 1
                then
                        if test -z "$nofetch"
                        then
                                # Fetch remote before determining tracking $sha1
-                               (sanitize_submodule_env; cd "$sm_path" && git-fetch) ||
+                               fetch_in_submodule "$sm_path" ||
                                die "$(eval_gettext "Unable to fetch in submodule path '\$sm_path'")"
                        fi
                        remote_name=$(sanitize_submodule_env; cd "$sm_path" && get_default_remote)
                if test -n "$recursive"
                then
                        (
 -                              prefix=$(relative_path "$prefix$sm_path/")
 +                              prefix=$(git submodule--helper relative-path "$prefix$sm_path/" "$wt_prefix")
                                wt_prefix=
                                sanitize_submodule_env
                                cd "$sm_path" &&
@@@ -872,7 -901,7 +872,7 @@@ cmd_summary() 
                ! GIT_DIR="$name/.git" git-rev-parse -q --verify $sha1_dst^0 >/dev/null &&
                missing_dst=t
  
 -              display_name=$(relative_path "$name")
 +              display_name=$(git submodule--helper relative-path "$name" "$wt_prefix")
  
                total_commits=
                case "$missing_src,$missing_dst" in
@@@ -984,16 -1013,13 +984,16 @@@ cmd_status(
                shift
        done
  
 -      git submodule--helper list --prefix "$wt_prefix" "$@" |
 +      {
 +              git submodule--helper list --prefix "$wt_prefix" "$@" ||
 +              echo "#unmatched"
 +      } |
        while read mode sha1 stage sm_path
        do
                die_if_unmatched "$mode"
                name=$(git submodule--helper name "$sm_path") || exit
                url=$(git config submodule."$name".url)
 -              displaypath=$(relative_path "$prefix$sm_path")
 +              displaypath=$(git submodule--helper relative-path "$prefix$sm_path" "$wt_prefix")
                if test "$stage" = U
                then
                        say "U$sha1 $displaypath"
@@@ -1065,10 -1091,7 +1065,10 @@@ cmd_sync(
                esac
        done
        cd_to_toplevel
 -      git submodule--helper list --prefix "$wt_prefix" "$@" |
 +      {
 +              git submodule--helper list --prefix "$wt_prefix" "$@" ||
 +              echo "#unmatched"
 +      } |
        while read mode sha1 stage sm_path
        do
                die_if_unmatched "$mode"
  
                if git config "submodule.$name.url" >/dev/null 2>/dev/null
                then
 -                      displaypath=$(relative_path "$prefix$sm_path")
 +                      displaypath=$(git submodule--helper relative-path "$prefix$sm_path" "$wt_prefix")
                        say "$(eval_gettext "Synchronizing submodule url for '\$displaypath'")"
                        git config submodule."$name".url "$super_config_url"