假设a.c文件中没有内容,然后按如下方式修改文件:
#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
输出?
答案 0 :(得分:6)
来自维基百科上的Unified diff format:
@@ -l,s +l,s @@ optional section heading
hunk范围信息包含两个hunk范围。的范围 原始文件的hunk前面有一个减号和范围 对于新文件,前面加上一个加号。每个大块范围都是 格式l,s其中l是起始行号,s是数字 更改块应用于每个相应文件的行数。在很多 GNU diff的版本,每个范围都可以省略逗号和尾随值 s,在这种情况下,s默认为1.注意,唯一的确实 有趣的值是第一个范围的l行号;一切 其他值可以从差异计算。
答案 1 :(得分:3)
我认为这是改变开始的地方,但对于第一种情况,新的(+)版本的数字1不是0。
行号从1开始,因此新(+)文件的1,6
可以按您所写的方式解释:1
是起始行号,6
是行数所示。
行号的0必须是表示文件不存在的特殊情况。这样,您就可以区分不存在的旧( - )文件 - 0,0
- 和空文件 - 1,0
。
答案 2 :(得分:1)
diff使用可以输入'patch'命令的格式。
以下是一些可以帮助您入门的信息:http://www.linuxtutorialblog.com/post/introduction-using-diff-and-patch-tutorial