首页 > 解决方案 > 无法摆脱 svn 合并冲突

问题描述

我们有一个主要项目的分支,我们不断合并到主干中。

不同的开发人员正在挑选他们自己的开发来分别合并,以便他们可以对应特定的 JIRA 问题。

我们不时地在主干根目录中使用以下命令来找出尚未合并的内容:

svn merge --dry-run svn://svnhost/repo/app/branch

通常,如果所有内容都已合并,则不会显示任何输出。

但是,这现在给我们一条消息,说“解决所有冲突,重新运行合并以应用剩余的未合并修订版”。

我曾尝试合并所有显示为冲突的内容并解决这些冲突,但它们不断出现,但修订号不同。

这是上述命令的完整输出(目录和文件已重命名):

--- Merging r43608 through r43615 into 'directory1':
   C directory1/file1
C    directory1/file2
C    directory1/file3
--- Merging r43609 through r43615 into 'directory2':
   C directory2/file1
C    directory2/file2
C    directory2/file3
--- Merging r43605 through r43615 into 'directory3':
C    directory3/file1
C    directory3/file2
   C directory3/file3
   C directory3/file4
   C directory3/file5
   C directory3/file6
--- Merging r43603 through r43615 into 'directory4':
C    directory4/file1
C    directory4/file2
   C directory4/file3
--- Merging r43603 through r43615 into 'directory5':
C    directory5/file1
C    directory5/file2
C    directory5/file3
   C directory5/file4
U    directory5/file5
C    directory5/file6
   C directory5/file7
   C directory5/file8
   C directory5/file9
C    directory5/file10
   C directory5/file11
 G   directory5
--- Merging r43603 through r43615 into 'directory6':
U    directory6/file1
C    directory6/file2
   C directory6/file3
   C directory6/file4
C    directory6/file5
--- Merging r43517 through r43615 into 'directory7':
   C directory7/file1
   C directory7/file2
   A directory7/file3
   C directory7/file4
   A directory7/file5
--- Merging r43607 through r43615 into 'directory8/file1':
 G   directory8/file1
--- Merging r43534 through r43615 into 'directory9':
C    directory9/file1
   C directory9/file2
   C directory9/file3
   C directory9/file4
   C directory9/file5
   C directory9/file6
   C directory9/file7
   C directory9/file8
   C directory9/file9
   C directory9/file10
   A directory9/file11
   C directory9/file12
   C directory9/file13
   A directory9/file14
   C directory9/file15
   C directory9/file16
C    directory9/file17
   C directory9/file18
   C directory9/file19
U    directory9/file20
   C directory9/file21
C    directory9/file22
   C directory9/file23
C    directory9/file24
C    directory9/file25
   C directory9/file26
   C directory9/file27
   C directory9/file28
   C directory9/file29
   C directory9/file30
C    directory9/file31
C    directory9/file32
 G   directory9
--- Merging r43517 through r43615 into 'directory10/f':
C    directory10/f/file1
--- Merging r43517 through r43615 into 'directory10/l':
U    directory10/l/file1
Summary of conflicts:
  Text conflicts: 23
  Tree conflicts: 39
svn: E155015: One or more conflicts were produced while merging r41855:43503 into
'/clean_trunk' --
resolve all conflicts and rerun the merge to apply the remaining
unmerged revisions

有人能告诉我这个输出试图告诉我们什么吗?

此输出中列出的许多目录/文件以及 svn merge-info 属性已经被合并,所以我不知道为什么它说它们没有被合并。

如果我使用它最后提到的修订范围执行合并试运行,那么我什么也得不到:

svn merge -r41855:43503 --dry-run svn://svnhost/repo/uniworks/tags/uniworks-2.2.6/

我们是否需要应用所有合并冲突并在一次提交中解决它们?

我在这里拔头发!

标签: svnmerge

解决方案


SVN 发生冲突时,使用修订名称创建临时文件作为备份,例如文件名r123 .txt 和文件名r345 .txt

一旦你手动合并(解决)冲突,你需要告诉 SVN,通过命令删除这些文件:

svn resolved

有人能告诉我这个输出试图告诉我们什么吗?

“C”代表冲突,“U”代表更新。

我们是否需要应用所有合并冲突并在一次提交中解决它们?

是的,您需要在一次签到时将它们全部合并。否则,您的构建中可能会出现诸如未找到定义、未定义变量等错误。


推荐阅读