1

从主干合并到 SVN 树中的开发分支时出现问题。

该项目的历史是这样的。它从一个树干开始。关于修订版 207,创建了第一个分支。然后,在修订版 331 中,感兴趣的分支从主干中分离出来。

我们现在处于修订版 384。331 之间的大部分更改是在感兴趣的分支上进行的,但少数是在主干上独立进行的。

为了使分支与主干保持一致,我想从主干合并到其中。所以我适时地这样做了:

svn merge ^/trunk .

但是,我发现各种冲突都在出现。我可能理解一些冲突,但树中的几乎所有目录和文件都会受到影响。

更糟糕的是,这些所谓的冲突中的大多数实际上是在 207 和 331 之间提交到主干的更改,因此已经合并到分支中,自从分支从主干分离后就一直存在。

比这更糟糕的是,许多所谓的冲突是树冲突,涉及被删除或重命名的文件,再次在 207 和 331 之间。因为它们不再存在于分支上,而且确实不应该存在于那里,我看不到任何解决问题的方法。

修复很复杂,因为对于几乎所有文件,分支都是正确的,因此合并,然后接受分支副本,让我没有什么可提交的,所以服务器永远不会得到合并实际上已经执行的提示出去。

我已经尝试了几件事来解决它:

svn cleanup

在我看来,这并没有做任何相关的事情。

svn checkout ^/branches/branch-of-interest new-local-copy-of-branch-of-interest

问题仍然存在于结帐的新副本中。

svn merge --record-only -r207:331 ^/trunk .

有趣的是,所谓的“仅记录”合并也试图更改我本地副本中的文件!

svn merge ^/trunk .

这产生了一大堆冲突和树冲突,即使在我与仅记录合并进行斗争之后,煞费苦心地解决了它(仅记录合并)应用的更改。

我还应该说,当我开始时,我的客户端运行的是 1.6.17,服务器运行的是 1.4.6。但是,服务器后来也升级到了 1.6.17,问题依然存在。

人们有什么办法可以解决这个问题吗?进行完全合并和逐个解析文件将非常耗时,而且在这一点上 - 出于显而易见的原因 - 我什至不相信下次我的 SVN 不会只是尝试使用相同的东西我又来了。

4

1 回答 1

0

事实证明,问题在于与存储库关联的数据库版本。即使在客户端和服务器升级到最新版本之后,数据库仍然是不跟踪合并的旧格式。

升级到最新的数据库版本解决了这个问题,让我可以毫无问题地合并。特别是,我们在托管服务器和 repo 的机器上使用了这些命令:

svnadmin upgrade /path/to/repository
svn-populate-node-origins-index /path/to/repository
于 2011-09-08T17:46:38.243 回答