【问题标题】:svn diff outputs incorrect resultsvn diff 输出不正确的结果
【发布时间】:2018-04-16 21:09:36
【问题描述】:

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

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

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

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

对于一个开始有 1233 行并且在修改后最后有 1228 行的文件。然而,这些修改是本地化的(这里几行,那里几行),而文件的大部分内容保持不变。

当我使用 GUI 通过右键单击 repo> TortoiseSVN>显示日志>导航到适当的修订>在 TortoiseMerge 中打开时,这也得到了确认。

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

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

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

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

谢谢

【问题讨论】:

    标签: svn


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-26
      • 2019-07-18
      • 2018-09-06
      • 2018-02-10
      • 1970-01-01
      • 1970-01-01
      • 2018-02-28
      • 1970-01-01
      相关资源
      最近更新 更多