git-svn分支

27

我正在使用git与svn仓库,一切都很顺利。我用git进行所有的分支操作,因此我没有在svn上进行分支操作,而是使用git进行分支操作并将这些分支推送到单独的位置。然后,需要时我从分支中提交更改。
但现在我想创建一些实际存在于svn上的分支,我尝试了:

$ git svn branch someFeature -m "message" 

我得到了这个:

$ git svn branch someFeature -m "message"  
Multiple branch paths defined for Subversion repository. 
You must specify where you want to create the branch with the 
  --destination argument.
我该如何指定目的地?我弄不清楚,手册也没有那么清晰。
1个回答

32
你有多个(或零个)从svn获取的目录被标记为分支存放地点。 查看你的.git/config文件,应该会有以下类似的部分:
[svn-remote "svn"]
url = file:///someurlto/svn
fetch = trunk:refs/remotes/trunk
branches = branches/*:refs/remotes/*
branches = branches2/*:refs/remotes/*

分支将有多个条目。(或者,如果您没有任何分支条目,则第一行应该与标准的SVN存储库布局一起使用。)

因此,在创建分支时,必须指定应在哪个目录中创建分支:

git svn branch someFeature -m "test" --destination branches2

最后一个元素是.git/config文件中branches行中的目录之一。


1
我只看到:url = file:///someurlto/svn fetch = trunk:refs/remotes/trunk我在那个文件中没有看到分支。 - slayerIQ
1
啊,那就是问题所在了。Git 不知道把这个分支放到哪里。在我的例子中添加一行类似的语句。 (branches = pathinsvnrepo/*:refs/remotes/*) - silk
一个没有trunk/branches文件夹结构的普通svn仓库怎么办?初始分支部分已经过去了,但git svn dcommit失败了。它抱怨说文件夹不存在... - kakyo
我也遇到了这个问题- 对我来说解决方案是克隆整个仓库,包括标签,因为如果你只克隆主干,那么你可以进行dcommit等操作,但无法推送到正确的位置。 - Oli C

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接