2013-05-13 113 views
3

我正在使用一个代码库(历史记录)已经通过手工合并而不是通过svn merge。我试图通过证明对大家有用的合并是如何改变这种状况 - 但是当我做一个预演,我得到这个:svn merge --dry-run显示svn区别

$ svn merge [[Repo URL]] . -c 21355,21358,21364,21370,21371,21373 --dry-run 
--- Merging r21355 into '.': 
U [[File 1]] 
--- Merging r21355 into '[[dir]]': 
U [[dir]]/[[File 2]] 
U [[dir]]/[[File 3]] 
--- Merging r21358 into '[[dir]]': 
U [[dir]]/[[File 4]] 
--- Merging r21364 into '[[dir]]': 
U [[dir]]/[[File 2]] 
C [[dir]]/[[File 4]]  
--- Merging r21370 into '[[dir]]': 
U [[dir]]/[[File 5]] 
--- Merging r21371 into '[[dir]]': 
U [[dir]]/[[File 5]] 
--- Merging r21373 into '[[dir]]': 
C [[dir]]/[[File 5]] 
U [[dir]]/[[File 6]] 
Summary of conflicts: 
    Text conflicts: 2 

我有两个文件(被列为4和5,分别),即在一次合并中幸存下来只会与最后一次合并发生冲突。我试图弄清楚现在是什么冲突,看看我能否解决它。如果我可以强迫svn吐出两个冲突变化的差异,我会喜欢它。

我检查了刚刚最窄目录的一个新的工作副本中,当我跑不空转合并,我得到:

--- Merging r21355 into '.': 
U [[File 3]] 
--- Merging r21358 into '.': 
U [[File 4]] 
--- Merging r21364 into '.': 
G [[File 4]] 
--- Merging r21370 into '.': 
U [[File 5]] 
--- Merging r21371 into '.': 
G [[File 5]] 
--- Merging r21373 into '.': 
G [[File 5]] 

(文件1,2,6驻留在别处)

所以,现在我特别困惑 - 干运行报告冲突,但是当合并实际运行时,它是成功的?这是预期的行为?我承认我不是SVN巫师,但我很困惑。

+0

我可以用两个修订版重现此问题。 Rev 7增加了一个文件,Rev 8改变了文件。命令'svn merge -r6:8'和'svn merge -c7,8'产生相同的结果。但是,如果我添加“--dry-run”选项,则前者成功,后者失败。听起来像是SVN 1.7中的一个bug。 – nosid 2013-05-13 20:03:32

+0

@nosid我正在运行1.6.3 – FrankieTheKneeMan 2013-05-13 20:46:10

回答

1

这是--dry-run的预期行为,它不修改文件系统。

因为您指定了单独的修订版,所以这些修订版正在分开应用,一个接一个地。合并输出中的G表示合并发生 - svn对已经有本地更改的文件进行了更改。

详细:

  • r21358修改文件4.
  • 在一个正常的合并,文件4现在有局部变化和r21364合并这些变化在一起,因为DIFF文件的当前状态相匹配。
  • 在干运行中,文件4没有被r21358改变。该文件与下一版本r21364预期的不匹配,因此您会发生冲突。
  • r21373发生同样的情况 - r21370或r21371修改了它适用的文件的相同部分。
  • r21371不会因此受到影响,因为它影响文件5的另一部分而不是r21370。

一旦你经过了所有这些打嗝,你将能够一次性合并所有这些,而无需指定个别修订,这种干运行和常规合并之间的区别将会发生远。

+0

我认为这在技术上发生了什么,但我认为这是一个错误,而不是预期的行为。 [此问题](http://subversion.tigris.org/issues/show_bug.cgi?id=2584),标记为已删除并重新添加的文件已修复,似乎表明“merge - dry-run '应该像'merge'一样正常运行,不需要改变任何文件。 '--dry-run'应该是一个工具,可以让你在遇到它们之前检查这些问题。 – FrankieTheKneeMan 2013-12-20 20:38:32