2012-09-06 107 views
2

比方說,有在交流轉換器文件中沒有的內容,然後一個修改文件如下:解讀「SVN DIFF」輸出

#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

Unified diff format維基百科:

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

的大塊範圍的信息包含兩個猛男範圍。原始文件的 大塊的範圍前面有一個負號,新文件的範圍 前面有一個加號。每個hunk範圍是 格式l,s其中l是起始行號,s是變更大塊適用於每個相應文件的行的數量 。在GNU diff的許多版本中,每個範圍都可以省略逗號和結尾值 s,在這種情況下,s默認爲1.請注意,唯一真正有趣的值是第一個範圍的l行號;所有的 其他值可以從diff中計算出來。

2

我認爲這是改變開始的地方,但對於第一種情況下,新的(+)版本的編號爲1不是0

行號從1開始,所以1,6新(+)文件可以解釋爲你寫的:1是起始行號,6是顯示的行數。

行號的0必須是表示文件不存在的特殊情況。這樣,您可以區分不存在的舊( - )文件— 0,0 —和空的— 1,0