2010-10-31 33 views
5

我目前正在解析diff文件,並且還沒有遇到有關diff文件的可靠文檔。什麼是Diff文件語法

我對規格特別感興趣。例如。我真的不明白,像這樣(在每一個改變的代碼塊的開始)的臺詞:我知道他們有行號,以及有多少行已經改變做

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

,但我沒到目前爲止,還沒有真正弄清楚細節。

輸出diff文件(至少是主要部分)的語法是什麼?

回答

6

檢查出GNU diffutils的documentation。你會發現這個部分:

接下來會出現一個或多個區別;每個大塊顯示文件不同的一個區域。統一格式的看起來像這樣:

@@ from-file-line-numbers to-file-line-numbers @@ 
    line-from-either-file 
    line-from-either-file... 

如果一個大塊只包含一行,則只顯示其起始行號。否則,它的行號看起來像'start,count'。一個空洞的大塊被認爲是從大塊後面的線開始。

如果一個塊和它的上下文包含兩行或更多行,其行號看起來像'start,count'。否則只會顯示其結束行號。一個空白的大塊被認爲是在大塊前面的線上結束。

這兩個文件的通用行都以空格字符開頭。兩個文件之間實際不同的行在左側打印列中具有以下指示符字符之一:

'+' 在此處將一行添加到第一個文件。

' - ' 一條線從第一個文件中移除。