Browse Source

Merge branch 'jl/maint-1.7.10-recurse-submodules-with-symlink'

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
maint
Junio C Hamano 13 years ago
parent
commit
15b3c82cbb
  1. 6
      git-submodule.sh
  2. 13
      t/t7406-submodule-update.sh

6
git-submodule.sh

@ -186,8 +186,10 @@ module_clone() @@ -186,8 +186,10 @@ module_clone()
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 "$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

13
t/t7406-submodule-update.sh

@ -636,4 +636,17 @@ test_expect_success 'submodule update properly revives a moved submodule' ' @@ -636,4 +636,17 @@ test_expect_success 'submodule update properly revives a moved submodule' '
)
'

test_expect_success SYMLINKS 'submodule update can handle symbolic links in pwd' '
mkdir -p linked/dir &&
ln -s linked/dir linkto &&
(
cd linkto &&
git clone "$TRASH_DIRECTORY"/super_update_r2 super &&
(
cd super &&
git submodule update --init --recursive
)
)
'

test_done

Loading…
Cancel
Save