git:当有合并时使用git-svn

时间:2011-09-25 13:07:42

标签: git svn

据我了解,git-svn不支持推送合并提交。

有没有办法让它适用于此类提交?

我们尝试使用rebase创建线性历史记录。但是,这会因空白错误而发生冲突。有没有一种线性化历史的方法,所以没有冲突?

2 个答案:

答案 0 :(得分:0)

将合并提交重新绑定到svn的最简单方法是压缩它们:

假设我们将分支dev重新定义为trunk

git checkout trunk
git merge --squash dev

您可能需要修复trunkdev之间的实际合并冲突。最后你有一个提交你可以git svn dcommit

此方法的缺点是您在SVN中丢失了提交的粒度。如果这是一个问题,您可以为git采用rebase风格的合并策略(例如http://unethicalblogger.com/2010/04/02/a-rebase-based-workflow.html)。

答案 1 :(得分:0)

这不是直截了当的,但可能。

  1. 查看您的功能分支

    $ git checkout feature1
    
  2. 创建一个Subversion分支,最好使用相同的名称并重新绑定本地git分支

    $ git svn branch feature1
    $ git rebase remotes/feature1
    
  3. 当您推送更改时,它们将转到Subversion分支,而不是主干。

    $ git svn dcommit
    
  4. 我所知道的进行电子合并的唯一方法是使用临时SVN结账并使用svn merge。对于可以自动执行而没有冲突的合并,编写最后步骤(SVN存储库查找,临时检出,合并)的脚本对我来说效果很好。