svn diff输出不正确的结果

时间:2018-04-04 05:34:29

标签: svn

我正在尝试使用以下命令区分两个文件:

svn diff -r 6382:6383 RepositoryURL --extensions -U0

输出结果非常奇怪,它显示整个文件被修改:

@@ -1,1233 +1,1228 @@

对于有1233行开头的文件,最后在修改后有1228行。然而,这些修改是本地化的(这里有几行,几行),而文件的大部分保持相同。

当我通过右键单击repo>使用GUI打开它时,也会确认这一点。 TortoiseSVN>显示日志>导航到适当的版本>在TortoiseMerge中打开。

在TortoiseMerge中,它仅显示突出显示的修改行,而不是整个文件。如果我"创建补丁文件"从TortoiseMerge我得到与我的命令完全相同的结果:

@@ -1,1233 +1,1228 @@

为什么diff功能显示在TortoiseMerge中修改整个文件我得到了我认为正确的结果?我想也许用户在记事本程序中编辑了文件,然后将其复制过来,但它仍然应该能够检测到这些行是相同的....

请注意,由于保密限制,我无法分享源代码,因此我依赖于精通svn的人的经验。

由于

1 个答案:

答案 0 :(得分:2)

diff认为文件已完全更改时,通常有两个可能的原因:

  1. 行结尾。不同的操作系统有不同的意见"行结尾应该如何相似:\n\r\n\r。大多数开发人员工具允许忽略此类更改,但有时在所有工具中未始终如一地应用该设置。在十六进制编辑器中检查原始和更新的源代码文件,以查看行结尾是否存在差异。

  2. 空格更改:源代码通常使用空格或制表符缩进。某些IDE编辑器会自动将代码重新格式化为其中一个。因此代码我的外观相同但是空格缩进字符已被替换。