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
This commit is contained in:
@ -186,8 +186,10 @@ module_clone()
|
|||||||
die "$(eval_gettext "Clone of '\$url' into submodule path '\$sm_path' failed")"
|
die "$(eval_gettext "Clone of '\$url' into submodule path '\$sm_path' failed")"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
a=$(cd "$gitdir" && pwd)/
|
# We already are at the root of the work tree but cd_to_toplevel will
|
||||||
b=$(cd "$sm_path" && pwd)/
|
# 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
|
# normalize Windows-style absolute paths to POSIX-style absolute paths
|
||||||
case $a in [a-zA-Z]:/*) a=/${a%%:*}${a#*:} ;; esac
|
case $a in [a-zA-Z]:/*) a=/${a%%:*}${a#*:} ;; esac
|
||||||
case $b in [a-zA-Z]:/*) b=/${b%%:*}${b#*:} ;; esac
|
case $b in [a-zA-Z]:/*) b=/${b%%:*}${b#*:} ;; esac
|
||||||
|
@ -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
|
test_done
|
||||||
|
Reference in New Issue
Block a user