2010-10-31 74 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'。否则只会显示其结束行号。一个空白的大块被认为是在大块前面的线上结束。

这两个文件的通用行都以空格字符开头。两个文件之间实际不同的行在左侧打印列中具有以下指示符字符之一:

'+' 在此处将一行添加到第一个文件。

' - ' 一条线从第一个文件中移除。