4

假设ac文件中没有内容,然后修改文件如下:

#include <stdio.h>

int main()
{
    printf("Hello, world\n");
}

执行svn diff,我收到了这条消息。

--- b.c (revision 1)
+++ b.c (working copy)
@@ -0,0 +1,6 @@
+#include <stdio.h>
+
+int main()
+{
+    printf("Hello, world\n");
+}

在代码中再添加一行:

#include <stdio.h>

int main()
{
    printf("Hello, world\n");
    printf("Goodbye, world\n");
}

这是svn diff结果:

--- b.c (revision 2)
+++ b.c (working copy)
@@ -3,4 +3,5 @@
 int main()
 {
     printf("Hello, world\n");
+    printf("Goodbye, world\n");
 }

我猜对于旧(-)和新(+)版本,逗号后面的数字是显示的总数行。但是,我不确定逗号前的数字。我认为这是改变开始的地方,但对于第一种情况,新(+)版本的数字是 1 而不是 0。

如何解释svn diff输出?

4

2 回答 2

8

来自维基百科上的统一差异格式

@@ -l,s +l,s @@ optional section heading

大块范围信息包含两个大块范围。原始文件的大块范围前面有一个减号,新文件的范围前面有一个加号。每个块范围的格式为 l,s,其中 l 是起始行号,s 是更改块应用于每个相应文件的行数。在许多版本的 GNU diff 中,每个范围都可以省略逗号和尾随值 s,在这种情况下 s 默认为 1。请注意,唯一真正有趣的值是第一个范围的 l 行号;所有其他值都可以从差异中计算出来。

于 2012-09-06T02:38:39.893 回答
3

我认为这是改变开始的地方,但对于第一种情况,新(+)版本的数字是 1 而不是 0。

行号从 1 开始,因此1,6对于 new(+) 文件可以解释为您写的:1是起始行号,6是显示的行数。

行号的 0 必须是表示文件不存在的特殊情况。这样你就可以区分一个不存在的 old(-) 文件 — 0,0— 和一个空文件 — 1,0

于 2012-09-06T02:18:17.053 回答