Merge branch 'jl/maint-1.7.10-recurse-submodules-with-symlink'
authorJunio C Hamano <gitster@pobox.com>
Sun, 22 Jul 2012 19:55:47 +0000 (12:55 -0700)
committerJunio C Hamano <gitster@pobox.com>
Sun, 22 Jul 2012 19:55:48 +0000 (12:55 -0700)
When "git submodule add" clones a submodule repository, it can get
confused where to store the resulting submodule repository in the
superproject's .git/ directory when there is a symbolic link in the
path to the current directory.

* jl/maint-1.7.10-recurse-submodules-with-symlink:
  submodules: don't stumble over symbolic links when cloning recursively

1  2 
git-submodule.sh

index 5629d875e6a0c0a390d046f28bf2d768116bf974,61f3b72e32ec31973c225a8534ccf3e34cc604cd..dba4d39e1fd3e971336e0d85f24c114c29c4d1fd
@@@ -182,12 -145,14 +182,14 @@@ module_clone(
        else
                mkdir -p "$gitdir_base"
                git clone $quiet -n ${reference:+"$reference"} \
 -                      --separate-git-dir "$gitdir" "$url" "$path" ||
 -              die "$(eval_gettext "Clone of '\$url' into submodule path '\$path' failed")"
 +                      --separate-git-dir "$gitdir" "$url" "$sm_path" ||
 +              die "$(eval_gettext "Clone of '\$url' into submodule path '\$sm_path' failed")"
        fi
  
-       a=$(cd "$gitdir" && pwd)/
-       b=$(cd "$sm_path" && pwd)/
+       # We already are at the root of the work tree but cd_to_toplevel will
+       # resolve any symlinks that might be present in $PWD
+       a=$(cd_to_toplevel && cd "$gitdir" && pwd)/
 -      b=$(cd_to_toplevel && cd "$path" && pwd)/
++      b=$(cd_to_toplevel && cd "$sm_path" && pwd)/
        # normalize Windows-style absolute paths to POSIX-style absolute paths
        case $a in [a-zA-Z]:/*) a=/${a%%:*}${a#*:} ;; esac
        case $b in [a-zA-Z]:/*) b=/${b%%:*}${b#*:} ;; esac