SVN如何在两个分支上添加文件时解决新的树冲突

DEf*_*ion 95 svn merge tree-conflict

合并两个分支(使用SVN 1.6.1)时,在两个分支上添加了一个文件(然后在那些单独的分支中处理),我遇到了一个新的树冲突:

      C foo.txt
  >   local obstruction, incoming add upon merge
Run Code Online (Sandbox Code Playgroud)

我需要来自两个分支的更改,但树冲突不会给我通常的.working,.merge-left和.merge-right文件 - 由于冲突的性质,这是可以理解的.这些冲突中有相当多的冲突,并且每个分支上都删除了相同的文件,但它们很容易解决.

我该如何解决这个问题?SVN redbean一书(1.6)不包括这种情况.

luk*_*mdo 160

我发现了一篇建议解决方案帖子.它即将运行:

svn resolve --accept working <YourPath>
Run Code Online (Sandbox Code Playgroud)

这将声称本地版本文件为OK.
您可以为单个文件或整个项目目录运行它.

  • 谢谢它也适合我,但我必须这样做:svn解决 - 接受工作FILENAME (5认同)
  • 是的你需要一个文件名.它接受'.' (当前目录).我还需要递归地这样做:"svn resolve --accept working --recursive." 解决所有有利于你的工作副本的问题(危险!当你这样做时,你可能正在吹走其他人的变化,就像解决冲突时一样) (5认同)
  • 谢谢,这也解决了:C foo.txt>本地添加,传入添加更新 (2认同)

Von*_*onC 40

正如"树冲突"设计文档的旧版本(2009)中所提到的:

XFAIL与添加版本化文件的合并冲突

此测试执行合并,将没有历史记录的文件添加到现有版本化文件中.
这应该是local obstruction, incoming add upon merge"品种"文件的树冲突.修正了r35341的预期.

(顺便说一句,这在ClearCase中也被称为"邪恶的双胞胎"):
在两个不同的分支中创建两次文件(这里"添加"两次),为两个不同的元素创建两个不同的历史,但名称相同.

理论上的解决方案是在目标分支中手动合并这些文件(使用外部差异工具)B2.

如果您仍然在源科的工作,理想的情况是,除去从源分支文件B1,从重新合并B2B1为了使在该文件中看到B1(那么你会在相同的元素上工作).
如果由于仅从B1to 发生合并而无法进行合并B2,则每次合并都需要手动合并B1->B2.

  • 但是如何在没有.merge-*文件的情况下进行手动合并? (11认同)
  • "树冲突"设计doc链接腐烂:( (2认同)
  • 有趣的是,即使两个添加的文件都是_identical_,它们仍然显示为冲突.这应该不会被标记为冲突. (2认同)

Gab*_*mes 9

如果传入的更改是您想要的更改怎么办?我无法运行svn resolve - 接受他们的全部

svn resolve --accept base

  • 我想我误解了这个问题.确实,'base'在使用'svn resolve'时相当于'theirs-full',但它并不能解决你的问题.我所做的是把它分成两部分:1)删除我的本地冲突目录(或文件),2)合并.这应该没有冲突地运行,并且由于"传入的更改是您想要的",我不关心已删除的项目 (4认同)