为什么我在 Subversion 中会遇到树冲突?

By simon at 2019-05-22 • 0人收藏 • 109人看过

我有一个主干的特性分支,并且定期将主干中的更改合并到分支中,一切正常工作。 今天我去合并分支回到主干和任何文件添加到我的主干后,我的分支创建被标记为"树冲突"。 将来有办法避免这种情况吗?

我不认为这些标记是正确的。

7 个回复 | 最后更新于 2019-05-22
2019-05-22   #1

Subversion 1.6添加了树冲突来覆盖目录级别的冲突。 一个很好的例子是,当您本地删除一个文件,然后一个更新试图带来该文件的文本更改下来。 另一种情况是,您正在编辑的文件有一个"重命名"操作,因为这是一个"添加 / 删除"操作。

的 Subversion Blog 上有一篇很棒的文章树木冲突.

2019-05-22   #2

如果因为没有编辑 / 删除 / 到文件附近的任何地方而遇到无意义的树冲突,那么 merge 命令中也很有可能出现错误。

可能发生的情况是,您以前已经合并了一系列您在当前合并中包含的更改。 例如,在主干中有人编辑了一个文件,然后重命名它。 如果在第一次合并中包含了编辑,然后在第二次合并中包含了编辑和重命名(实质上是删除) ,那么也会产生树冲突。 这样做的原因是,先前合并的编辑然后显示为您自己的编辑,因此删除不会自动执行。

这至少可以发生在1.4存储库中,我不确定1.5中引入的合并跟踪是否有帮助。

2019-05-22   #3

这可能是由于各地不使用相同的版本客户机造成的。

对同一个存储库使用版本1.5的客户机和版本1.6的客户机可能会造成这种问题。 (我自己也被咬了。)

2019-05-22   #4

我不知道这是否发生在您身上,但有时我选择错误的目录合并,我得到这个错误,即使所有的文件看起来完全正常。

例子:

将 / svn / project / branches / some-branch / sources 合并到 / svn / project / trunk -- 树冲突

Merge / svn / project / branches / some-branch to / svn / project / trunk -- OK

这可能是一个愚蠢的错误,但它并不总是显而易见的,因为你认为它是更复杂的东西。

2019-05-22   #5

根据我的经验,每当我删除一个文件夹时,SVN 都会创建一个树冲突。 似乎没有理由。

我是唯一一个正在处理我的代码的人——删除目录——提交——冲突!

我已经迫不及待地想换成饭桶.

我应该澄清-我使用Subclipse. 这可能就是问题所在! 再说一次,我迫不及待地想换... ..。

2019-05-22   #6

我今天也遇到了这个问题,尽管我的特殊问题可能与你的问题无关。 在检查了文件列表之后,我意识到我做了什么——我暂时在一个程序集中使用来自另一个程序集的文件。 我对它做了很多修改,不想遗漏 SVN 历史,所以在我的分支中,我将文件从另一个程序集的文件夹中移动过来。 Svn 不会跟踪这个文件,所以它看起来就像是文件被删除然后重新添加了。 这最终导致了树冲突。

我通过将文件移回、提交和然后合并我的分支。 然后我把文件移回原处。 这似乎奏效了。

2019-05-22   #7

我通过阅读 Gary 给出的链接找到了解决方案(我建议按照这种方式)。

解决树冲突的总结承诺你的工作目录在 SVN 客户端1.6. x 中,你可以使用:

Svn resolve ——接受 working-r。

在哪里.是有冲突的目录。

警告:"提交你的工作目录"意味着你的沙盒结构将是你要提交的,因此,如果你从你的沙盒中删除了一些文件,它们也会从存储库中删除。 这仅适用于发生冲突的目录。

通过这种方式,我们建议 SVN 来解决冲突(-- 解决) ,接受沙盒内的工作副本(-- 接受工作) ,递归地(- r) ,由工作目录(.).

在 toroisesvn 中,右键选择"Resolved",实际上解决了这个问题。

登录后方可回帖

Loading...