当我一遍又一遍地添加和删除时,svn diff如何找出diff文件

时间:2014-01-14 10:13:31

标签: svn diff

我用

svn diff -r $new:$old $file --summarize

找出$ file和$ old之间的$文件是否有变化。但是如果我一遍又一遍地添加和删除文件。比如

  1. 添加$ file revision 230

  2. 删除$ file revision 231

  3. 添加$ file revision 232

  4. 虽然在230和232添加的$文件是相同的路径和相同的名称但内容不同,然后调用

    svn diff -r $230:$232 $file --summarize
    

    svn显示没有任何变化,而我期望一个结果告诉我$ file被修改。

    如何解决此问题?

2 个答案:

答案 0 :(得分:1)

首先, - summarize选项有一个特定的用途,主要用于比较文件树。它只是显示具有差异的文件列表,而不是每个文件的详细差异。用于单个文件时没有任何价值。

其次,diff总是简单地比较文件或树的两个快照。它并不关心文件如何进入它所处的状态,只是它在快照中的样子。因此,例如,如果您删除一个版本中的代码块,请在下一个版本中将其添加回来,然后在第三个版本中更改一行。然后在所有这些之前使用代码执行当前版本的差异,它只会显示一行代码更改。它没有考虑两者之间发生的任何变化。

如果您希望查看修订范围内的所有更改,则需要使用svn log。

答案 1 :(得分:0)

虽然您要添加具有相同名称的文件,但SVN会在内部将其视为两个实体。因此,您的命令正在尝试在版本231和232之间找到文件的修订版本,其中在版本231处,当前文件甚至不存在于SVN中。在这种情况下,您必须在父文件夹上执行svn diff而不是文件。