解释"svn diff"输出

pro*_*eek 4 svn diff

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

#include <stdio.h>

int main()
{
    printf("Hello, world\n");
}
Run Code Online (Sandbox Code Playgroud)

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

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

在代码中再添加一行:

#include <stdio.h>

int main()
{
    printf("Hello, world\n");
    printf("Goodbye, world\n");
}
Run Code Online (Sandbox Code Playgroud)

这是svn diff结果:

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

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

如何解释svn diff输出?

Sam*_*iao 7

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

@@ -l,s +l,s @@ optional section heading
Run Code Online (Sandbox Code Playgroud)

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