我在主干中有一个特性分支,并定期将主干中的更改合并到分支中,一切都运行正常。今天,我将分支合并回主干中,在创建分支后添加到主干中的任何文件都被标记为“树冲突”。将来有办法避免这种情况吗?
我认为他们没有被正确标记。
我在主干中有一个特性分支,并定期将主干中的更改合并到分支中,一切都运行正常。今天,我将分支合并回主干中,在创建分支后添加到主干中的任何文件都被标记为“树冲突”。将来有办法避免这种情况吗?
我认为他们没有被正确标记。
当前回答
我遇到了同样的问题,并通过使用这些指令重新做合并来解决它。基本上,它使用SVN的“2-URL合并”将主干更新到分支的当前状态,而不用担心历史和树冲突。让我不用手动修复114棵树的冲突。
我不确定它是否像人们希望的那样保存了历史,但对我来说是值得的。
其他回答
I came across this problem today as well, though my particular issue probably isn't related to yours. After inspecting the list of files, I realized what I had done -- I had temporarily been using a file in one assembly from another assembly. I have made lots of changes to it and didn't want to orphan the SVN history, so in my branch I had moved the file over from the other assembly's folder. This isn't tracked by SVN, so it just looks like the file is deleted and then re-added. This ends up causing a tree conflict.
我通过将文件移回,提交,然后合并我的分支来解决这个问题。然后我把文件移了回来。:)这似乎奏效了。
Subversion 1.6添加了树冲突来覆盖目录级别的冲突。一个很好的例子是,当您在本地删除一个文件时,更新会尝试对该文件进行文本更改。另一种情况是,当您对正在编辑的文件进行subversion重命名时,因为这是一个添加/删除操作。
CollabNet的Subversion博客上有一篇关于树冲突的很棒的文章。
根据我的经验,每当我删除一个文件夹时,SVN都会产生树冲突。似乎没有什么理由。
我是唯一一个工作在我的代码->删除目录->提交->冲突!
我迫不及待地想切换到Git。
我应该澄清一下,我使用Subclipse。这可能就是问题所在!再说一次,我迫不及待地想换……
我有时会遇到这样的情况:
假设您有一个主干,从中创建了一个发布分支。在主干上做了一些更改之后(特别是创建“some-dir”目录),你创建了一个特性/修复分支,你想稍后将其合并到发布分支中(因为更改足够小,而且特性/修复对于发布非常重要)。
trunk -- ... -- create "some-dir" -- ...
\ \-feature/fix branch
\- release branch
如果你尝试将特性/修复分支直接合并到发布分支中,你会得到一个树冲突(即使目录甚至不存在于特性/修复分支中):
svn status
! C some-dir
> local missing or deleted or moved away, incoming file edit upon merge
因此,在创建feature/fix分支之前,你需要显式地合并在trunk上完成的提交,该分支在合并feature/fix分支之前创建了“some-dir”目录。
我经常忘记这一点,因为这在git中是不必要的。
我遇到了同样的问题,并通过使用这些指令重新做合并来解决它。基本上,它使用SVN的“2-URL合并”将主干更新到分支的当前状态,而不用担心历史和树冲突。让我不用手动修复114棵树的冲突。
我不确定它是否像人们希望的那样保存了历史,但对我来说是值得的。