Skip to content

Commit

Permalink
git-svn: fix handling of even funkier branch names
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Eric Wong committed Sep 7, 2008
1 parent 7c4d021 commit f4392df
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 0 deletions.
1 change: 1 addition & 0 deletions git-svn.perl
Original file line number Diff line number Diff line change
Expand Up @@ -4025,6 +4025,7 @@ sub gs_do_switch {
}
}
$ra ||= $self;
$url_b = escape_url($url_b);
my $reporter = $ra->do_switch($rev_b, '', 1, $url_b, $editor, $pool);
my @lock = $SVN::Core::VERSION ge '1.2.0' ? (undef) : ();
$reporter->set_path('', $rev_a, 0, @lock, $pool);
Expand Down
16 changes: 16 additions & 0 deletions t/t9118-git-svn-funky-branch-names.sh
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,10 @@
test_description='git-svn funky branch names'
. ./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' '
mkdir project project/trunk project/branches project/tags &&
echo foo > project/trunk/foo &&
Expand All @@ -15,6 +19,8 @@ test_expect_success 'setup svnrepo' '
"$svnrepo/pr ject/branches/fun plugin" &&
svn cp -m "more fun!" "$svnrepo/pr ject/branches/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
'

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

Expand All @@ -35,6 +42,15 @@ test_expect_success 'test dcommit to funky branch' "
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

test_done

0 comments on commit f4392df

Please sign in to comment.