git-svn:重命名分支并将其用作新的SVN“trunk”而不是使用“merge --reintegrate”?

时间:2015-12-17 12:05:14

标签: git svn merge git-svn svn-reintegrate

我正在使用的Ruby on Rails项目使用SVN(1.6.17,Debian)进行版本控制。本地我正在使用Git(2.5.4,OS X)和git-svn,我一直在研究一个分支(称为“ruby22rails42”),对项目进行重大更新(使用新的框架版本)并定期进行更改来自SVN“trunk”以跟上项目的最新进展。最近,我在我们的在线SVN服务器上创建了一个镜像分支(“/branches/v8.5-ruby22rails42”),在那里推送我的本地Git分支并再次与trunk合并,供其他开发人员查看。

现在我基本上希望“/branches/v8.5-ruby22rails42”成为新的“主干”并将旧的SVN主干保留为版本分支(让我们称之为“/branches/v8.4-ruby19rails3”)。不幸的是,“svn merge --reintegrate”似乎因“mergeinfo not supported”错误而失败:

/opt/trunk$ svn merge --reintegrate ^/branches/v8.5-ruby22rails42
svn: Abfrage der Zusammenführungsinformationen wird von »file:///.../branches/v8.5-ruby22rails42« nicht unterstützt

svnadmin upgrade会修复此错误吗?我现在不想更新服务器上的SVN实用程序,因为许多其他工具也可以访问SVN repo。

如果不是:

(如何)我可以在SVN服务器和我的git-svn本地存储库上重命名trunk,并使用我的分支作为新的“trunk”,从而避免在SVN中完成繁琐的合并过程?我如何告诉我当地的Git repo跟踪这个重命名过程? 这可能要求所有客户丢弃本地结账并重新检查新的主干,但这是可以接受的。

如果这不可能或不可取,如何使用Subversion 1.6.17避免上面的mergeinfo错误并成功将我的分支合并到trunk中?然后,我可以在合并之前的最后一次提交中创建一个新分支,并将其保留为我的“v8.4-rails3ruby19”分支。

1 个答案:

答案 0 :(得分:0)

我可能会在您的上下文中遗漏某些内容,但通常您不想替换原始代码,而是成功。我可能会在你的地方考虑的是以下顺序:

  1. 标记当前主干或/并创建快速修复分支/branches/v8.4-ruby19rails3

  2. 将您的分支合并到主干。通过svn或git / git-svn

  3. e.g。以下序列将把你所有的作品压在你的树枝上并把它放到树干上:

    git svn fetch
    git checkout svn/trunk
    git merge --squash ruby22rails42
    git commit -m "Merged ruby22rails42"
    git svn dcommit