SVN diff输出不正确的结果。

3

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

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

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

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

在进行修改后,一个初始具有1233行的文件最终只剩下了1228行。这些修改是局部的(这里几行,那里几行),而大部分文件保持不变。

当我使用GUI打开该文件时,通过右键单击存储库>TortoiseSVN>显示日志>导航到适当的修订版本>在TortoiseMerge中打开,也得到了同样的结果。

在TortoiseMerge中,它仅显示高亮显示的修改行,而不是整个文件。 此外,如果我从TortoiseMerge创建“补丁文件”,我得到的结果与从命令行获取的完全相同:

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

为什么“diff”功能显示整个文件被修改,但在TortoiseMerge中我得到了我认为是正确的结果?我想也许用户在记事本程序中编辑了文件,然后将其复制过来,但它仍然应该能够检测到这些行是相同的...请注意,由于保密限制,我无法分享源代码,因此我依靠那些精通svn的人的经验。谢谢。
1个回答

3

diff 认为一个文件已经完全改变时,通常有两个潜在的原因:

  1. 行结束符。不同的操作系统对于行结束符的格式有不同的看法:\n\r\n\r。大多数开发工具允许忽略这些更改,但有时并未在所有工具中一致应用此设置。请在十六进制编辑器中检查原始和更新的源代码文件,以查看行结束符方面是否存在差异。

  2. 空格更改:源代码通常使用空格或制表符进行缩进。一些 IDE 编辑器会自动重新格式化代码成其中一种。因此,代码可能看起来相同,但空格缩进字符已被替换。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接