SVN在两个分支上添加文件时如何解决新的树冲突
当合并两个分支(使用SVN 1.6.1),其中一个文件已被添加到两个分支(然后在这些单独的分支)工作,我得到一个新的树冲突:
C foo.txt > local obstruction, incoming add upon merge
我需要两个分支的更改,但是树冲突并没有给我通常的.working,.merge-left和.merge-right文件 – 由于冲突的性质,这是可以理解的。 有相当多的这些冲突,并在每个分支上删除相同的文件,但他们很容易解决。
我该如何解决这个问题? SVN redbean书(1.6版)不包括这种情况。
正如在“树冲突”devise文件的较早版本(2009年)中提到的那样:
XFAIL从添加版本文件合并冲突
这个testing做了一个合并, 它将没有历史logging的文件添加到现有的版本化文件中 。
这应该是“local obstruction, incoming add upon merge
”的文件上的树形冲突。 修正了r35341的预期。
(这在ClearCase中也被称为“邪恶的双胞胎”):
一个文件在两个不同的分支中创build两次(这里“添加”两次),为两个不同的元素创build两个不同的历史,但是具有相同的名称。
理论上的解决scheme是手动合并目标分支“ B2
”中的这些文件(使用外部差异工具)。
如果你仍然在源代码分支上工作,理想的情况是从源代码分支B1
删除该文件,从B2
合并到B1
中,以便在B1
显示该文件(然后你将在同一个元素上工作) 。
如果由于合并仅发生在B1
到B2
而不可能合并,则每个B1->B2
合并将需要手动合并。
我发现一个post提出了一个解决scheme 。 即将运行:
svn resolve --accept working <YourPath>
这将声称本地版本文件为OK。
您可以为单个文件或整个项目目录运行它。
如果传入的变化是你想要的呢? 我无法运行svn解决scheme – 接受他们的完整
svnparsing – 接受基地
我只是试图按照上面的user619330的build议设法把自己搞得非常彻底。 情况是:(1):我在初始分支branch1上添加了一些文件, (2)我创build了一个新的分支branch2进行进一步的开发,将它从树干分支出来,然后合并来自branch1的更改(3)同事将我的mod从branch1复制到他自己的分支,添加了更多的mod,然后合并回主干; (4)我现在想把最新的变化从树干合并到我当前的工作分支branch2。 这是svn 1.6.17。
合并树与新文件有冲突,我想从它们不同的树干中得到新版本,所以从一个干净的branch2副本中,我做了一个svn删除冲突的文件,提交这些branch2的变化(从而创build一个临时版本的branch2没有问题的文件),然后做了我从主干合并。 我这样做是因为我希望历史与主干版本匹配,以便以后在尝试合并回主干时不会遇到更多问题。 合并进行得很好,我得到了文件的主干版本,svn st显示一切正常,然后在尝试提交更改之前,在之前完成的删除和从合并中添加之间,我遇到了更多的树冲突。 有一个svn解决冲突赞成我的工作副本(现在有文件的中继版本),并得到它提交。 一切都应该好,对不对?
那么,不。 branch2的另一个副本的更新导致了旧版本的文件(pre-trunk merge)。 所以现在我有两个不同的branch2工作副本,据说更新到相同的版本,两个不同版本的文件,并坚持认为他们是最新的! 检出一个干净的副本branch2导致旧的(pre-trunk)版本的文件。 我手动更新这些到中继版本,并提交更改,回到我的第一个工作副本(我从原来提交的树干更改),尝试更新它,现在得到有问题的文件校验和错误。 打开问题的目录,通过更新得到一个新的版本,最后我有什么应该是一个好的版本的branch2与树干的变化。 我希望。 警告开发者。