29

我不知道 svn 团队何时决定对我们造成树冲突,但它完全破坏了 svn 的合并功能。

我有一个分支,我想将主干中的最新更改合并到分支中。我已经完成了一次这样的合并,但是由于树冲突而失败了。这是命令:

$ svn --force merge -r 3185:3192 svn://chamar2/rx-services/SAMS .
svn: Attempt to add tree conflict that already exists

我第一次尝试这种合并(没有--force)它只创建了树冲突并且没有合并任何东西。现在它只报告上面的消息。

如果我svn status在分支工作副本上执行此操作,它会显示所有具有尚未合并回主干的更改的文件。当然,我的分支的目的是在它们还没有在主干中的地方进行这些更改。

他们这样做的时候在想什么?

我还没有找到任何有用的信息来说明导致树冲突的原因以及既然 svn 已经创建了这些东西,我该如何继续工作。

有没有办法告诉 svn 忘记树冲突并像以前那样进行合并?

我使用的是 1.6 客户端和较旧的 svn 服务器(可能是 1.3.1)。

4

4 回答 4

15

问题原来是我选择了 parent/ 目录作为合并的源,而不是 parent/trunk/ 目录。这是用户错误,但树冲突消息令人困惑。如果 svn 刚刚完成合并,我会立即看到问题。

树冲突引入了新的消息语义,需要一些时间来适应。

感谢您提供指向关于树冲突的 Tortoise 文档的指针。这是我见过的唯一一个解决分支工作的文档。但是,给出的示例没有解释为什么我在分支上修改的文件出现树冲突。树冲突消息将需要一些时间来适应。

在大多数情况下,您所做的似乎只是将树冲突标记为已解决,而在这些情况下,树冲突似乎只是噪音。

Mark Phippard 说旧的服务器版本不会导致树冲突。仅当您需要合并跟踪支持并且您的服务器是 1.5 之前的版本时,才需要更新服务器。显然,合并跟踪是旧 svn 服务器唯一缺少的东西:

http://eclipse.open.collab.net/ds/viewMessage.do?dsForumId=62&dsMessageId=332448
于 2009-07-29T14:17:10.403 回答
11

svn:尝试添加已经存在的树冲突

Subversion 抱怨是因为在您进行了产生冲突的合并之后,您又进行了相同的合并。SVN 尝试添加冲突,但注意到之前的合并操作已经创建了冲突。所以它正确地输出警告。

如果您执行合并操作并且您对结果不满意,那么在尝试其他操作之前,您应该首先恢复本地更改。

至于原始树冲突:要了解为什么行为与旧客户端不同以及如何解决此类冲突,您必须阅读svn 书中有关树冲突的部分。tortoiseSVN 手册也有一个关于树冲突的好话题

于 2009-07-28T14:06:25.503 回答
2

我猜测您正在观察 1.6 客户端和 1.3 服务器之间的不良交互。树冲突检测是 1.6 的一个新特性。此外,合并支持已在 1.5 进行了更改(并且变得更加可用)。

我会尝试将服务器和 repo 格式升级到 1.6,要尝试的另一件事是使用 1.5(没有树冲突)或 1.4(也没有新的合并)客户端。

同样,这都是猜测,可能并没有真正有用......

于 2009-07-27T20:39:13.340 回答
0

嘿伙计们,当我尝试进行 svn 合并时,我遇到了完全相同的问题,树冲突。事实证明,Laurynas 是绝对正确的。这是因为 svn 存储库是旧版本。在服务器上,我进入目录 {repopath}\db\format 并在格式文件中包含“2”。

我所做的只是做一个

svnadmin upgrade {repopath}

这很无痛。

在我这样做之后,当我尝试使用合并跟踪时,我没有再遇到任何树冲突!谢谢你的提示!

于 2012-03-28T02:31:23.057 回答