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 @tmp;
|
||||
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, $_;
|
||||
}
|
||||
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