我有一个Ruby on Rails项目,我正在使用SVN(1.6.17,Debian)进行版本控制。我在本地使用git(2.5.4,OS X)和git-svn,我一直在为一个项目的主要更新(使用新的框架版本)开发一个分支(称为“ruby22rails42”),并定期提交更改来自SVN“主干”,以跟上项目的最新进展。最近,我在我们的在线SVN服务器上创建了一个镜像分支(“/branches/v8.5-ruby22rails42”),将我的本地Git分支推到那里,然后再与其他开发人员合并,以供其他开发人员查看。git-svn:重命名分支并将其用作新的SVN'trunk'而不是使用“merge --reintegrate”?
现在我基本上希望“/branches/v8.5-ruby22rails42”成为新的“trunk”,并将旧的SVN中继保留为版本分支(我们称之为“/branches/v8.4-ruby19rails3”) 。不幸的是,“SVN合并--reintegrate”似乎失败,出现“合并信息不支持”错误:
/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回购也被很多其他工具访问。
如果不是:
(如何)我能不能SVN服务器和我的git - svn的本地存储库中的重命名树干都用我的分支作为新的“主干”,从而避免在SVN繁琐的合并进程共?我将如何告诉我的本地Git仓库跟踪这个重命名过程? 这可能会要求所有客户放弃本地签出并重新签出新的中继线,但这是可以接受的。
如果这是不可能或不可取的,如何避免使用Subversion 1.6.17的mergeinfo错误,并成功地将我的分支合并到trunk中?然后我可以在合并之前从上次提交中创建一个新分支,并将其保存为我的“v8.4-rails3ruby19”分支。
如果我只有git的担心,我只想已合并。然而,上游是(仍然)SVN,并且SVN因为某种原因不想合并(见上面的错误),我不想在SVN或Git仓库中丢失合并历史记录。我通过搜索“git svn merge”所得到的建议都表示要在Subversion中进行合并,否则信息将会丢失...... – Jens
Git-Svn不鼓励合并并倾向于重新分配。如果你不想让你的历史遗失,你可以尝试'git svn rebase',然后'git svn dcommit'。不幸的是,由于从主干合并(而不是回扣),回扣可能不那么顺利。如果这不起作用,你总是可以进入低水平:参见'svn cp'。 –
我继续升级SVN元数据格式以允许mergeinfo,然后使用纯SVN进行合并。之后我还有一些倒退的变化,但并不多。所以使用纯SVN合并来完成这种任务可能是最好的解决方案。 – Jens