我正在尝试使用以下命令区分两个文件:
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
的人的经验。
由于
答案 0 :(得分:2)
当diff
认为文件已完全更改时,通常有两个可能的原因:
行结尾。不同的操作系统有不同的意见"行结尾应该如何相似:\n
或\r\n
或\r
。大多数开发人员工具允许忽略此类更改,但有时在所有工具中未始终如一地应用该设置。在十六进制编辑器中检查原始和更新的源代码文件,以查看行结尾是否存在差异。
空格更改:源代码通常使用空格或制表符缩进。某些IDE编辑器会自动将代码重新格式化为其中一个。因此代码我的外观相同但是空格缩进字符已被替换。