【问题标题】:svn merge functionality broken by tree conflictssvn 合并功能被树冲突破坏
【发布时间】:2009-07-27 20:09:06
【问题描述】:

我不知道 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)。

【问题讨论】:

  • SVN 没有添加树冲突作为特性;它们是修订控制的本质所固有的。现在,您可以指出 SVN 在处理和/或有关树冲突的消息方面做得很差,但至少它确实检测到它们并试图让您知道发生了什么。

标签: svn merge tree-conflict


【解决方案1】:

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

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

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

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

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

http://eclipse.open.collab.net/ds/viewMessage.do?dsForumId=62&dsMessageId=332448

【讨论】:

  • 树冲突:将目录视为文本文件,每个子目录为一行。现在,从该文件中添加和删除行并合并 - 你会遇到冲突。这正是树冲突所发生的事情,只是合并编辑器不存在(显然答案是将目录复制到正确的位置并标记为已解决)。
【解决方案2】:

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

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

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

至于原始树冲突:要了解为什么行为与旧客户端不同以及如何解决此类冲突,您必须阅读svn书中的section on tree conflicts。 tortoiseSVN手册也有不错的topic on tree conflicts

【讨论】:

  • 我刚刚“尝试添加已经存在的树冲突”进行全新的合并。后跟“读取假脱机报告请求响应时出错”
  • -1 :我在没有以前合并的新合并中收到此错误。我认为是同一合并中的两个树冲突导致了问题。
【解决方案3】:

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

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

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

【讨论】:

  • 我曾考虑将我的客户端降级回 1.5,但 svn 有一个讨厌的习惯,即每个新版本都会更改工作副本格式,而我的 1.6 工作副本不适用于 1.5 客户端。我可能不得不降级客户端并重新结帐。
【解决方案4】:

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

我所做的只是做了一个

svnadmin upgrade {repopath}

这很轻松。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-27
    • 2013-01-02
    • 1970-01-01
    • 2011-06-23
    • 1970-01-01
    • 2015-04-12
    • 2012-08-28
    • 2013-04-28
    相关资源
    最近更新 更多