diff --git a/git-svn.perl b/git-svn.perl index 914c707a90..e64e97b4de 100755 --- a/git-svn.perl +++ b/git-svn.perl @@ -558,7 +558,7 @@ sub cmd_branch { my ($src, $rev, undef, $gs) = working_head_info($head); - my $remote = Git::SVN::read_all_remotes()->{svn}; + my $remote = Git::SVN::read_all_remotes()->{$gs->{repo_id}}; my $glob = $remote->{ $_tag ? 'tags' : 'branches' }; my ($lft, $rgt) = @{ $glob->{path} }{qw/left right/}; my $dst = join '/', $remote->{url}, $lft, $branch_name, ($rgt || ()); diff --git a/t/t9128-git-svn-cmd-branch.sh b/t/t9128-git-svn-cmd-branch.sh index 47c4d4d938..252daa7e1a 100755 --- a/t/t9128-git-svn-cmd-branch.sh +++ b/t/t9128-git-svn-cmd-branch.sh @@ -56,4 +56,23 @@ test_expect_success 'git svn branch tests' ' test_must_fail git svn tag tag1 ' +test_expect_success 'branch uses correct svn-remote' ' + (svn co "$svnrepo" svn && + cd svn && + mkdir mirror && + svn add mirror && + svn copy trunk mirror/ && + svn copy tags mirror/ && + svn copy branches mirror/ && + svn ci -m "made mirror" ) && + rm -rf svn && + git svn init -s -R mirror --prefix=mirror/ "$svnrepo"/mirror && + git svn fetch -R mirror && + git checkout mirror/trunk && + base=$(git rev-parse HEAD:) && + git svn branch -m "branch in mirror" d && + test $base = $(git rev-parse remotes/mirror/d:) && + test_must_fail git rev-parse remotes/d +' + test_done