svn diff 命令行输出格式详解

main.c文件的内容如下

  1 #include <stdio.h>
  2 #include "add.h"
  3 #include "sub.h"
  4
  5 int main()
  6 {
  7         printf("5 + 10 = %d.n",add(5,10));
  8         printf("15 - 10 = %d.n",sub(15,10));
  9         //kris's test
 10         printf("kris: 12 + 28 = %d.n",add(12,28));
 11         //sally's test
 12         printf("sally: 60 - 33 = %d.n",sub(60,33));
 13         return 0;
 14 }

下面,我们做一些修改,具体如下

  1 #include <stdio.h>
  2 #include "add.h"
  3 #include "sub.h"
  4
  5 int main()
  6 {
  7         printf("5 + 10 = %d.n",add(5,10));
  8         printf("15 - 10 = %d.n",sub(15,10));
  9         //kris's test
 10         printf("kris: 32 + 28 = %d.n",add(32,28));
 11         printf("kris: 15 - 10 = %d.n",sub(15,10));
 12         //sally's test
 13         printf("sally: 60 - 33 = %d.n",sub(60,33));
 14         return 0;
 15 }

修改完后,调用svn diff命令,会有如下的输出,下面就说说输出中各部分的意思。

root@letuknowit:/home/kris/calc/trunk# svn diff main.c
Index: main.c
===================================================================
--- main.c      (revision 8)
+++ main.c      (working copy)
@@ -7,7 +7,8 @@
        printf("5 + 10 = %d.n",add(5,10));
        printf("15 - 10 = %d.n",sub(15,10));
        //kris's test
-       printf("kris: 12 + 28 = %d.n",add(12,28));
+       printf("kris: 32 + 28 = %d.n",add(32,28));
+       printf("kris: 15 - 10 = %d.n",sub(15,10));
        //sally's test
        printf("sally: 60 - 33 = %d.n",sub(60,33));
        return 0;

Index: main.c

svn diff可以查看当前工作拷贝中所有的被修改的文件,对于每个文件的diff输出部分由Index: 文件名的形式进行区分。
等于号后面的内容就是关于main.c文件的diff情况了。

--- main.c      (revision 8)
+++ main.c      (working copy)

— 打头的是原始文件,也就是版本库中的最新版本,或者理解为修改前的文件
+++ 打头的是目标文件,这个就是你修改后的版本

@@ -7,7 +7,8 @@

这里的-和+分别表示原始文件和目标文件,7,7表示从第7行开始的7行,-7,7就是原始文件的从第7行开始的7行内容,+7,8的意思类似,表示目标文件从第7行开始的8行内容。结合起来理解就是:
目标文件从第7行开始的8行内容和原始文件的从第7行开始的7行内容之间存在差异

        printf("5 + 10 = %d.n",add(5,10));
        printf("15 - 10 = %d.n",sub(15,10));
        //kris's test
-       printf("kris: 12 + 28 = %d.n",add(12,28));
+       printf("kris: 32 + 28 = %d.n",add(32,28));
+       printf("kris: 15 - 10 = %d.n",sub(15,10));
        //sally's test
        printf("sally: 60 - 33 = %d.n",sub(60,33));
        return 0;

这个就是具体的差异情况了,前面的-号表示需要从原始文件中删除的行,+号表示目标文件中将要增加的行,-号开头的部分只属于原始文件,+号开头的部分只属于目标文件,其余的是两者相同的部分。

  7   1   1         printf("5 + 10 = %d.n",add(5,10));
  8   2   2         printf("15 - 10 = %d.n",sub(15,10));
  9   3   3         //kris's test
 10   4     -       printf("kris: 12 + 28 = %d.n",add(12,28));
 11       4 +       printf("kris: 32 + 28 = %d.n",add(32,28));
 12       5 +       printf("kris: 15 - 10 = %d.n",sub(15,10));
 13   5   6         //sally's test
 14   6   7         printf("sally: 60 - 33 = %d.n",sub(60,33));
 15   7   8         return 0;

为了进一步了解@@ -7,7 +7,8 @@的意思,上面加上了行号等信息,第一列的数字是行号,后面两列的数字表示第几行。经过标注可以清晰的看出原始文件第7行开始的7行和目标文件第7行开始的8行内容了。

参考
http://www.letuknowit.com/archives/avn-diff-output-interpreter



发表评论

电子邮件地址不会被公开。

CAPTCHA

*