git svn作为svn合并困境的拐杖

时间:2011-03-07 22:43:35

标签: git-svn

考虑一个svn存储库,它的分支不一定位于通常的trunk / tags / branches布局中。我想说服git-svn将其中的两个分支加上,以及它需要的任何其他分支,这样我就可以使用git作为合并工具来避免因svn合并困扰我们的各种程度的问题。如果分支都在一个地方,那就是--branches,但是如果不是这样的话会有办法吗?

1 个答案:

答案 0 :(得分:3)

执行git svn init ROOT_URL,然后进入并修改.git/config以添加其他fetch行:

[svn-remote "svn"]
   url = https://svn.mcs.anl.gov/repos/mpi
   fetch = mpich2/trunk:refs/remotes/trunk
   fetch = mpich2/branches/dev/threads:refs/remotes/threads
   fetch = mpich2/branches/dev/knem:refs/remotes/knem
   fetch = mpich2/branches/release/MPICH2_1_0_8:refs/remotes/mpich2-1.0.8

然后git fetch,您应该在配置文件中明确列出所有分支。

但请注意,您可能不希望通过git-svn实际外部合并。 Git不会为你维护svn:mergeinfo属性,这将使回到原生的基于SVN的合并工作流几乎不可能。您可能会因为挑选或合并已经提交到实际SVN存储库的代码而将git-svn混淆不清,因为它会在提交消息中搜索git-svn-id:“breadcrumbs”以便计算应该将哪个SVN路径用于git svn dcommit。有关此内容的更多信息,请参阅git-svn手册页的CAVEATS部分。

FWIW,我也posted about this in longer form on my own site