submodule: ignore trailing slash on superproject URL
Before63e95beb0
(2016-04-15, submodule: port resolve_relative_url from shell to C), it did not matter if the superprojects URL had a trailing slash or not. It was just chopped off as one of the first steps (The "remoteurl=${remoteurl%/}" near the beginning of resolve_relative_url(), which was removed in said commit). When porting this to the C version, an off-by-one error was introduced and we did not check the actual last character to be a slash, but the NULL delimiter. Reintroduce the behavior from before63e95beb0
, to ignore the trailing slash. Reported-by: <venv21@gmail.com> Helped-by: Dennis Kaarsemaker <dennis@kaarsemaker.net> Signed-off-by: Stefan Beller <sbeller@google.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
c66410ed32
commit
087885049e
@ -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;
|
||||
|
@ -319,6 +319,7 @@ 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" "../submodule" "../foo/submodule"
|
||||
test_submodule_relative_url "(null)" "../foo/submodule" "../submodule" "../foo/submodule"
|
||||
test_submodule_relative_url "(null)" "../foo" "../submodule" "../submodule"
|
||||
|
Loading…
Reference in New Issue
Block a user