提交 86521aca 编写于 作者: J Johan Herland 提交者: Junio C Hamano

Bring local clone's origin URL in line with that of a remote clone

On a local clone, "git clone" would use the fully DWIMmed path as the origin
URL in the resulting repo. This was slightly inconsistent with the case of a
remote clone where the _given_ URL was used as the origin URL (because the
DWIMming was done remotely, and was therefore not available to "git clone").

This behaviour caused problems when cloning a local non-bare repo with
relative submodule URLs, because these submodule URLs would then be resolved
against the DWIMmed URL (e.g. "/repo/.git") instead of the given URL (e.g.
"/repo").

This patch teaches "git clone" to use the _given_ URL - instead of the
DWIMmed path - as the origin URL. This causes relative submodule URLs to be
resolved correctly, as long the _given_ URL indicates the correct directory
against which the submodule URLs should be resolved.

The patch also updates a testcase that contained the old-style origin URLs.
Signed-off-by: NJohan Herland <johan@herland.net>
Signed-off-by: NJunio C Hamano <gitster@pobox.com>
上级 f733c709
...@@ -387,7 +387,7 @@ int cmd_clone(int argc, const char **argv, const char *prefix) ...@@ -387,7 +387,7 @@ int cmd_clone(int argc, const char **argv, const char *prefix)
path = get_repo_path(repo_name, &is_bundle); path = get_repo_path(repo_name, &is_bundle);
if (path) if (path)
repo = path; repo = xstrdup(make_nonrelative_path(repo_name));
else if (!strchr(repo_name, ':')) else if (!strchr(repo_name, ':'))
repo = xstrdup(make_absolute_path(repo_name)); repo = xstrdup(make_absolute_path(repo_name));
else else
......
...@@ -109,7 +109,7 @@ test_expect_success 'remove remote' ' ...@@ -109,7 +109,7 @@ test_expect_success 'remove remote' '
cat > test/expect << EOF cat > test/expect << EOF
* remote origin * remote origin
URL: $(pwd)/one/.git URL: $(pwd)/one
Remote branch merged with 'git pull' while on branch master Remote branch merged with 'git pull' while on branch master
master master
New remote branch (next fetch will store in remotes/origin) New remote branch (next fetch will store in remotes/origin)
...@@ -140,7 +140,7 @@ test_expect_success 'show' ' ...@@ -140,7 +140,7 @@ test_expect_success 'show' '
cat > test/expect << EOF cat > test/expect << EOF
* remote origin * remote origin
URL: $(pwd)/one/.git URL: $(pwd)/one
Remote branch merged with 'git pull' while on branch master Remote branch merged with 'git pull' while on branch master
master master
Tracked remote branches Tracked remote branches
...@@ -169,7 +169,7 @@ test_expect_success 'prune' ' ...@@ -169,7 +169,7 @@ test_expect_success 'prune' '
cat > test/expect << EOF cat > test/expect << EOF
Pruning origin Pruning origin
URL: $(pwd)/one/.git URL: $(pwd)/one
* [would prune] origin/side2 * [would prune] origin/side2
EOF EOF
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册