Answers:
我找到了阅读Gary给出的链接的解决方案(我建议按照这种方式)。
总结一下使用SVN客户端1.6.x 提交工作目录来解决树冲突的方法,您可以使用:
svn resolve --accept working -R .
.
冲突的目录在哪里。
警告:“提交您的工作目录”意味着您的沙箱结构将是您要提交的结构,因此,例如,如果您从沙箱中删除了一些文件,它们也将从存储库中删除。这仅适用于冲突目录。
通过这种方式,我们建议SVN解决冲突(--resolve
),从当前目录()开始--accept working
,递归地(-R
)接受沙盒()内部的工作副本.
。
在TortoiseSVN中,右键单击选择“已解决”实际上可以解决此问题。
svn rm'd
认为您不再需要该目录,但是其他人添加了所需的新文件。更新工作副本时,您应该会遇到树冲突。如果您只是盲目接受解决方案(删除目录),那么您将删除该人的文件。没有魔术“做正确的事”按钮。您必须了解自己在做什么,为什么与最新版本冲突以及如何正确解决它。
git
。既然这对于问询者来说可能不是一个可行的选择,那么按照此答案描述的方式处理情况是最好的选择。
以我的经验,每当我删除文件夹时,SVN都会创建树冲突。似乎没有理由。
我是唯一处理我的代码的人->删除目录->提交->冲突!
我等不及要切换到Git了。
我应该澄清-我使用Subclipse。那可能是问题所在!同样,我等不及要切换了...
这里发生的事情如下:您在主干上创建一个新文件,然后将其合并到分支中。在合并提交中,该文件也会在您的分支中创建。
当您将分支合并回主干时,SVN再次尝试执行相同的操作:它看到在分支中创建了一个文件,并尝试在合并提交中在主干中创建该文件,但该文件已经存在!这会造成树冲突。
避免这种情况的方法是进行特殊的合并,即重新整合。您可以通过--reintegrate
开关来实现。
您可以在文档中阅读以下内容:http : //svnbook.red-bean.com/en/1.7/svn.branchmerge.basicmerging.html#svn.branchemerge.basicmerging.reintegrate
但是,将分支合并回主干时,基础数学却大不相同。现在,您的功能分支是重复的主干更改和私有分支更改的混搭,因此没有简单连续的修订范围可以复制。通过指定--reintegrate选项,您要求Subversion仅仔细复制分支唯一的那些更改。(实际上,它是通过将最新的主干树与最新的分支树进行比较来完成此操作的:所产生的差异正是您的分支更改!)
重新集成分支后,强烈建议删除它,否则,无论何时从另一个方向合并(从干线到分支),您都将不断遇到树冲突。(由于与上述完全相同的原因。)
也可以解决此问题,但我从未尝试过。您可以在这篇文章中阅读它:v1.6中的Subversion分支重新集成
--reintegrate
Subversion 1.8中不推荐使用该选项。从SVN 1.8开始,这种合并是自动的!
直到今天,至少从三个月前开始,当我尝试将一个分支合并回主干时(使用TortoiseSVN 1.11),我经常遇到数百个树冲突。不管是否基于基准,BTW。自2004年以来,我一直在使用TortoiseSVN,从2004年开始,我一直都在重新集成分支。我想最近一定发生了什么事?
因此,今天我进行了一个简单的实验,发现了造成这些疯狂冲突的原因:
讨论:(请参阅附件)
所有修订 ...什么?我几乎不知道客户一定是在引用“ 目标的所有修订版!(主干)”,因为在重新集成该分支的过程中,我看到了提及“合并修订版1-HEAD”!我的天啊。可怜的恶魔,你在这里死了。该分支机构是@ 393出生的,看在上帝的份上,您不能阅读其出生证明吗?
解析度:
道德: 我无法理解为什么他们仍然没有修复该错误,因为它是一个,很抱歉。我应该花时间向他们报告。
我遇到了同样的问题,并通过使用这些说明重新进行合并来解决了这一问题。基本上,它使用SVN的“ 2-URL合并”来更新trunk
到分支的当前状态,而不必担心历史和树冲突。使我免于手动修复114个树冲突。
我不确定它是否能像人们想要的那样保存历史,但是就我而言,这是值得的。
我有时遇到的一种情况:
假设您有一个主干,从中创建了一个发布分支。在主干上进行了一些更改(特别是创建“ 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
因此,您需要在合并功能部件/修订版分支之前,显式地合并在主干上完成的提交,然后再创建功能部件/修订版分支,该分支创建了“ some-dir”目录。
我经常忘记这一点,因为这在git中是不必要的。