【问题标题】:svn merge --dry-run Show svn diffsvn merge --dry-run 显示 svn diff
【发布时间】:2013-05-07 19:59:39
【问题描述】:

我正在使用(历史上)手动合并而不是通过svn merge 合并的代码库。我试图通过向所有人证明合并的有用性来改变这一点 - 但是当我进行试运行时,我得到了这个:

$ 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 向导,但我很困惑。

【问题讨论】:

  • 我可以通过两次修改来重现这个问题。 Rev 7 添加了一个文件,rev 8 更改了文件。命令svn merge -r6:8svn merge -c7,8 产生相同的结果。但是,如果我添加选项--dry-run,则前者成功,后者失败。听起来像是 SVN 1.7 中的一个错误。
  • @nosid 我正在运行 1.6.3

标签: svn merge diff


【解决方案1】:

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

由于您指定了单独的修订,因此这些修订将一个接一个地单独应用。合并输出中的G 表示发生了合并 - svn 对已经有本地更改的文件进行了更改。

详细说明:

  • r21358 修改文件 4。
  • 在正常合并中,文件 4 现在具有本地更改,r21364 将这些更改合并在一起,因为差异匹配文件的当前状态。
  • 在试运行中,r21358 未更改文件 4。该文件与下一个修订版 r21364 所期望的不匹配,因此您会遇到冲突。
  • r21373 也会发生同样的事情 - r21370 或 r21371 修改了它适用的文件的同一部分。
  • r21371 不受此影响,因为它影响文件 5 的不同部分,而不是 r21370。

一旦您克服了所有这些小问题,您就可以一次合并所有这些,而无需指定单独的修订,并且试运行和常规合并之间的这种差异将消失。

【讨论】:

  • 我认为这是技术上正在发生的事情,但我认为这是一个错误,而不是预期的行为。 This issue,对于已删除和重新添加的文件,标记为已修复,似乎表明 merge --dry-run 应该与 merge 完全一样,只是不更改任何文件。 --dry-run 应该是一个工具,可以让您在遇到这些问题之前检查它们。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-11
  • 2011-01-26
  • 2016-12-24
  • 2013-05-11
  • 2011-02-11
  • 2010-10-04
相关资源
最近更新 更多