我目前正在解析diff文件,并且还没有遇到关于diff文件的可靠文档。
我对规格特别感兴趣。例如。我真的不明白这样的行(在每个更改的代码块的开头):
@@ -296,7 +296,8 @@
我知道它们与行号有关,行数有多少变化,但到目前为止我还无法弄清楚细节。
输出diff
文件的语法是什么(至少是主要部分)?
答案 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很好地描述了格式。