Deskin Miller <deskinm@xxxxxxxxx> wrote: > The 'branch' subcommand incorrectly had the svn-remote to use hardcoded > as 'svn', the default remote name. This meant that branches derived > from other svn-remotes would try to use the branch and tag configuration > for the 'svn' remote, potentially copying would-be branches to the wrong > place in SVN, into the branch namespace for another project. > > Fix this by using the remote name extracted from the svn info for the > specified git ref. Add a testcase for this behaviour. > > Signed-off-by: Deskin Miller <deskinm@xxxxxxxxx> Looks alright to me, thanks Deskin. Acked-by: Eric Wong <normalperson@xxxxxxxx> > --- > Applies on v1.6.1-rc1. Apologies for not catching this when first > writing testcases for the branch subcommand. > > Deskin Miller > > git-svn.perl | 2 +- > t/t9128-git-svn-cmd-branch.sh | 17 +++++++++++++++++ > 2 files changed, 18 insertions(+), 1 deletions(-) > > diff --git a/git-svn.perl b/git-svn.perl > index 914c707..e64e97b 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 47c4d4d..e2b6696 100755 > --- a/t/t9128-git-svn-cmd-branch.sh > +++ b/t/t9128-git-svn-cmd-branch.sh > @@ -56,4 +56,21 @@ 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 tags 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 > -- > 1.6.1.rc1 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html