什么是Diff文件语法

时间:2010-10-31 00:26:54

标签: parsing diff

我目前正在解析diff文件,并且还没有遇到关于diff文件的可靠文档。

我对规格特别感兴趣。例如。我真的不明白这样的行(在每个更改的代码块的开头):

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

我知道它们与行号有关,行数有多少变化,但到目前为止我还无法弄清楚细节。

输出diff文件的语法是什么(至少是主要部分)?

2 个答案:

答案 0 :(得分:7)

查看documentation的GNU diffutils。在那里你会找到这个部分:

  

接下来会出现一个或多个差异;每个块显示文件不同的一个区域。统一格式的帅哥看起来像这样:

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

如果hunk只包含一行,则只显示其起始行号。否则它的行号看起来像'开始,计数'。一个空的大块被认为是从大块后面的一行开始的。

     

如果一个hunk及其上下文包含两行或更多行,则其行号看起来像'start,count'。否则只显示其结束行号。一个空的大块被认为是在大块之前的行结束。

     

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

     

“+”   这里添加了一行到第一个文件。

     

“ - ”   这里从第一个文件中删除了一行。

答案 1 :(得分:6)

Wikipedia page on the diff utility很好地描述了格式。