Merge branch 'sb/submodule-ignore-trailing-slash'
A minor regression fix for "git submodule". * sb/submodule-ignore-trailing-slash: t0060: sidestep surprising path mangling results on Windows submodule: ignore trailing slash in relative url submodule: ignore trailing slash on superproject URL
This commit is contained in:
commit
65aaa29f7d
@ -95,6 +95,8 @@ static int chop_last_dir(char **remoteurl, int is_relative)
|
||||
* NEEDSWORK: This works incorrectly on the domain and protocol part.
|
||||
* remote_url url outcome expectation
|
||||
* http://a.com/b ../c http://a.com/c as is
|
||||
* http://a.com/b/ ../c http://a.com/c same as previous line, but
|
||||
* ignore trailing slash in url
|
||||
* http://a.com/b ../../c http://c error out
|
||||
* http://a.com/b ../../../c http:/c error out
|
||||
* http://a.com/b ../../../../c http:c error out
|
||||
@ -113,8 +115,8 @@ static char *relative_url(const char *remote_url,
|
||||
struct strbuf sb = STRBUF_INIT;
|
||||
size_t len = strlen(remoteurl);
|
||||
|
||||
if (is_dir_sep(remoteurl[len]))
|
||||
remoteurl[len] = '\0';
|
||||
if (is_dir_sep(remoteurl[len-1]))
|
||||
remoteurl[len-1] = '\0';
|
||||
|
||||
if (!url_is_local_not_ssh(remoteurl) || is_absolute_path(remoteurl))
|
||||
is_relative = 0;
|
||||
@ -147,6 +149,8 @@ static char *relative_url(const char *remote_url,
|
||||
}
|
||||
strbuf_reset(&sb);
|
||||
strbuf_addf(&sb, "%s%s%s", remoteurl, colonsep ? ":" : "/", url);
|
||||
if (ends_with(url, "/"))
|
||||
strbuf_setlen(&sb, sb.len - 1);
|
||||
free(remoteurl);
|
||||
|
||||
if (starts_with_dot_slash(sb.buf))
|
||||
|
@ -305,8 +305,9 @@ test_git_path GIT_COMMON_DIR=bar config bar/config
|
||||
test_git_path GIT_COMMON_DIR=bar packed-refs bar/packed-refs
|
||||
test_git_path GIT_COMMON_DIR=bar shallow bar/shallow
|
||||
|
||||
# In the tests below, the distinction between $PWD and $(pwd) is important:
|
||||
# on Windows, $PWD is POSIX style (/c/foo), $(pwd) has drive letter (c:/foo).
|
||||
# In the tests below, $(pwd) must be used because it is a native path on
|
||||
# Windows and avoids MSYS's path mangling (which simplifies "foo/../bar" and
|
||||
# strips the dot from trailing "/.").
|
||||
|
||||
test_submodule_relative_url "../" "../foo" "../submodule" "../../submodule"
|
||||
test_submodule_relative_url "../" "../foo/bar" "../submodule" "../../foo/submodule"
|
||||
@ -314,27 +315,29 @@ test_submodule_relative_url "../" "../foo/submodule" "../submodule" "../../foo/s
|
||||
test_submodule_relative_url "../" "./foo" "../submodule" "../submodule"
|
||||
test_submodule_relative_url "../" "./foo/bar" "../submodule" "../foo/submodule"
|
||||
test_submodule_relative_url "../../../" "../foo/bar" "../sub/a/b/c" "../../../../foo/sub/a/b/c"
|
||||
test_submodule_relative_url "../" "$PWD/addtest" "../repo" "$(pwd)/repo"
|
||||
test_submodule_relative_url "../" "$(pwd)/addtest" "../repo" "$(pwd)/repo"
|
||||
test_submodule_relative_url "../" "foo/bar" "../submodule" "../foo/submodule"
|
||||
test_submodule_relative_url "../" "foo" "../submodule" "../submodule"
|
||||
|
||||
test_submodule_relative_url "(null)" "../foo/bar" "../sub/a/b/c" "../foo/sub/a/b/c"
|
||||
test_submodule_relative_url "(null)" "../foo/bar" "../sub/a/b/c/" "../foo/sub/a/b/c"
|
||||
test_submodule_relative_url "(null)" "../foo/bar/" "../sub/a/b/c" "../foo/sub/a/b/c"
|
||||
test_submodule_relative_url "(null)" "../foo/bar" "../submodule" "../foo/submodule"
|
||||
test_submodule_relative_url "(null)" "../foo/submodule" "../submodule" "../foo/submodule"
|
||||
test_submodule_relative_url "(null)" "../foo" "../submodule" "../submodule"
|
||||
test_submodule_relative_url "(null)" "./foo/bar" "../submodule" "foo/submodule"
|
||||
test_submodule_relative_url "(null)" "./foo" "../submodule" "submodule"
|
||||
test_submodule_relative_url "(null)" "//somewhere else/repo" "../subrepo" "//somewhere else/subrepo"
|
||||
test_submodule_relative_url "(null)" "$PWD/subsuper_update_r" "../subsubsuper_update_r" "$(pwd)/subsubsuper_update_r"
|
||||
test_submodule_relative_url "(null)" "$PWD/super_update_r2" "../subsuper_update_r" "$(pwd)/subsuper_update_r"
|
||||
test_submodule_relative_url "(null)" "$PWD/." "../." "$(pwd)/."
|
||||
test_submodule_relative_url "(null)" "$PWD" "./." "$(pwd)/."
|
||||
test_submodule_relative_url "(null)" "$PWD/addtest" "../repo" "$(pwd)/repo"
|
||||
test_submodule_relative_url "(null)" "$PWD" "./å äö" "$(pwd)/å äö"
|
||||
test_submodule_relative_url "(null)" "$PWD/." "../submodule" "$(pwd)/submodule"
|
||||
test_submodule_relative_url "(null)" "$PWD/submodule" "../submodule" "$(pwd)/submodule"
|
||||
test_submodule_relative_url "(null)" "$PWD/home2/../remote" "../bundle1" "$(pwd)/home2/../bundle1"
|
||||
test_submodule_relative_url "(null)" "$PWD/submodule_update_repo" "./." "$(pwd)/submodule_update_repo/."
|
||||
test_submodule_relative_url "(null)" "$(pwd)/subsuper_update_r" "../subsubsuper_update_r" "$(pwd)/subsubsuper_update_r"
|
||||
test_submodule_relative_url "(null)" "$(pwd)/super_update_r2" "../subsuper_update_r" "$(pwd)/subsuper_update_r"
|
||||
test_submodule_relative_url "(null)" "$(pwd)/." "../." "$(pwd)/."
|
||||
test_submodule_relative_url "(null)" "$(pwd)" "./." "$(pwd)/."
|
||||
test_submodule_relative_url "(null)" "$(pwd)/addtest" "../repo" "$(pwd)/repo"
|
||||
test_submodule_relative_url "(null)" "$(pwd)" "./å äö" "$(pwd)/å äö"
|
||||
test_submodule_relative_url "(null)" "$(pwd)/." "../submodule" "$(pwd)/submodule"
|
||||
test_submodule_relative_url "(null)" "$(pwd)/submodule" "../submodule" "$(pwd)/submodule"
|
||||
test_submodule_relative_url "(null)" "$(pwd)/home2/../remote" "../bundle1" "$(pwd)/home2/../bundle1"
|
||||
test_submodule_relative_url "(null)" "$(pwd)/submodule_update_repo" "./." "$(pwd)/submodule_update_repo/."
|
||||
test_submodule_relative_url "(null)" "file:///tmp/repo" "../subrepo" "file:///tmp/subrepo"
|
||||
test_submodule_relative_url "(null)" "foo/bar" "../submodule" "foo/submodule"
|
||||
test_submodule_relative_url "(null)" "foo" "../submodule" "submodule"
|
||||
|
Loading…
Reference in New Issue
Block a user