Merge branch 'jl/maint-1.7.10-recurse-submodules-with-symlink' into maint
authorJunio C Hamano <gitster@pobox.com>
Mon, 30 Jul 2012 20:04:18 +0000 (13:04 -0700)
committerJunio C Hamano <gitster@pobox.com>
Mon, 30 Jul 2012 20:04:18 +0000 (13:04 -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 fbf2fafaaf49ec65090ec4eadb33d1ccedc60436,61f3b72e32ec31973c225a8534ccf3e34cc604cd..30fa93a8a0a4985f7ce980d4abf69410af22976c
@@@ -146,12 -145,14 +146,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