svn diff輸出格式詳解

工程師WWW發表於2014-02-12

衝突解決一節結束後,我們的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行內容了。

相關文章