0

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

现在我基本上希望“/branches/v8.5-ruby22rails42”成为新的“主干”,并将旧的 SVN 主干保留为版本化分支(我们称之为“/branches/v8.4-ruby19rails3”)。不幸的是,“svn merge --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 避免上述合并信息错误并成功地将我的分支合并到主干中?然后,我可以从合并之前的最后一次提交创建一个新分支,并将其保留为我的“v8.4-rails3ruby19”分支。

4

1 回答 1

0

我可能在你的上下文中遗漏了一些东西,但通常你不想替换原始标签,而是想继承它。我可能会在您的位置考虑类似于以下顺序:

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

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

例如,以下序列将压缩您分支中的所有工作并将其放入主干:

git svn fetch
git checkout svn/trunk
git merge --squash ruby22rails42
git commit -m "Merged ruby22rails42"
git svn dcommit
于 2015-12-17T17:16:57.397 回答