Don't try and percent-escape existing percent escapes in git-svn URIs
git-svn project names are percent-escaped ever since f5530b8
(git-svn: support for funky branch and project names over HTTP(S),
2007-11-11).
Unfortunately this breaks the scenario where the user hands git-svn an
already-escaped URI. Fix the regexp to skip over what looks like
existing percent escapes, and test this scenario.
Signed-off-by: Kevin Ballard <kevin@sb.org>
Acked-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
740fdd27f0
commit
8114da1616
@ -3665,7 +3665,7 @@ sub escape_uri_only {
|
|||||||
my ($uri) = @_;
|
my ($uri) = @_;
|
||||||
my @tmp;
|
my @tmp;
|
||||||
foreach (split m{/}, $uri) {
|
foreach (split m{/}, $uri) {
|
||||||
s/([^\w.-])/sprintf("%%%02X",ord($1))/eg;
|
s/([^\w.%-]|%(?![a-fA-F0-9]{2}))/sprintf("%%%02X",ord($1))/eg;
|
||||||
push @tmp, $_;
|
push @tmp, $_;
|
||||||
}
|
}
|
||||||
join('/', @tmp);
|
join('/', @tmp);
|
||||||
|
31
t/t9120-git-svn-clone-with-percent-escapes.sh
Executable file
31
t/t9120-git-svn-clone-with-percent-escapes.sh
Executable file
@ -0,0 +1,31 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# Copyright (c) 2008 Kevin Ballard
|
||||||
|
#
|
||||||
|
|
||||||
|
test_description='git-svn clone with percent escapes'
|
||||||
|
. ./lib-git-svn.sh
|
||||||
|
|
||||||
|
test_expect_success 'setup svnrepo' "
|
||||||
|
mkdir project project/trunk project/branches project/tags &&
|
||||||
|
echo foo > project/trunk/foo &&
|
||||||
|
svn import -m '$test_description' project '$svnrepo/pr ject' &&
|
||||||
|
rm -rf project &&
|
||||||
|
start_httpd
|
||||||
|
"
|
||||||
|
|
||||||
|
if test "$SVN_HTTPD_PORT" = ""
|
||||||
|
then
|
||||||
|
test_expect_failure 'test clone with percent escapes - needs SVN_HTTPD_PORT set' 'false'
|
||||||
|
else
|
||||||
|
test_expect_success 'test clone with percent escapes' '
|
||||||
|
git svn clone "$svnrepo/pr%20ject" clone &&
|
||||||
|
cd clone &&
|
||||||
|
git rev-parse refs/remotes/git-svn &&
|
||||||
|
cd ..
|
||||||
|
'
|
||||||
|
fi
|
||||||
|
|
||||||
|
stop_httpd
|
||||||
|
|
||||||
|
test_done
|
Loading…
Reference in New Issue
Block a user