Browse Source

git-svn: fix handling of even funkier branch names

Apparently do_switch() tolerates the lack of escaping in less
funky branch names.  For the really strange and scary ones, we
need to escape them properly.  It strangely maintains compatible
with the existing handling of branch names with spaces and
exclamation marks.

Reported-by: m.skoric@web.de ($gmane/94677)
Signed-off-by: Eric Wong <normalperson@yhbt.net>
maint
Eric Wong 17 years ago committed by Junio C Hamano
parent
commit
61aeeefd29
  1. 1
      git-svn.perl
  2. 16
      t/t9118-git-svn-funky-branch-names.sh

1
git-svn.perl

@ -3983,6 +3983,7 @@ sub gs_do_switch {
} }


$ra ||= $self; $ra ||= $self;
$url_b = escape_url($url_b);
my $reporter = $ra->do_switch($rev_b, '', 1, $url_b, $editor, $pool); my $reporter = $ra->do_switch($rev_b, '', 1, $url_b, $editor, $pool);
my @lock = $SVN::Core::VERSION ge '1.2.0' ? (undef) : (); my @lock = $SVN::Core::VERSION ge '1.2.0' ? (undef) : ();
$reporter->set_path('', $rev_a, 0, @lock, $pool); $reporter->set_path('', $rev_a, 0, @lock, $pool);

16
t/t9118-git-svn-funky-branch-names.sh

@ -6,6 +6,10 @@
test_description='git-svn funky branch names' test_description='git-svn funky branch names'
. ./lib-git-svn.sh . ./lib-git-svn.sh


# Abo-Uebernahme (Bug #994)
scary_uri='Abo-Uebernahme%20%28Bug%20%23994%29'
scary_ref='Abo-Uebernahme%20(Bug%20#994)'

test_expect_success 'setup svnrepo' ' test_expect_success 'setup svnrepo' '
mkdir project project/trunk project/branches project/tags && mkdir project project/trunk project/branches project/tags &&
echo foo > project/trunk/foo && echo foo > project/trunk/foo &&
@ -15,6 +19,8 @@ test_expect_success 'setup svnrepo' '
"$svnrepo/pr ject/branches/fun plugin" && "$svnrepo/pr ject/branches/fun plugin" &&
svn cp -m "more fun!" "$svnrepo/pr ject/branches/fun plugin" \ svn cp -m "more fun!" "$svnrepo/pr ject/branches/fun plugin" \
"$svnrepo/pr ject/branches/more fun plugin!" && "$svnrepo/pr ject/branches/more fun plugin!" &&
svn cp -m "scary" "$svnrepo/pr ject/branches/fun plugin" \
"$svnrepo/pr ject/branches/$scary_uri" &&
start_httpd start_httpd
' '


@ -23,6 +29,7 @@ test_expect_success 'test clone with funky branch names' '
cd project && cd project &&
git rev-parse "refs/remotes/fun%20plugin" && git rev-parse "refs/remotes/fun%20plugin" &&
git rev-parse "refs/remotes/more%20fun%20plugin!" && git rev-parse "refs/remotes/more%20fun%20plugin!" &&
git rev-parse "refs/remotes/$scary_ref" &&
cd .. cd ..
' '


@ -35,6 +42,15 @@ test_expect_success 'test dcommit to funky branch' "
cd .. cd ..
" "


test_expect_success 'test dcommit to scary branch' '
cd project &&
git reset --hard "refs/remotes/$scary_ref" &&
echo urls are scary >> foo &&
git commit -m "eep" -- foo &&
git svn dcommit &&
cd ..
'

stop_httpd stop_httpd


test_done test_done

Loading…
Cancel
Save