我目前正在解析diff文件,并且还没有遇到关于diff文件的可靠文档.
我对规格特别感兴趣.例如,我并不真正理解这样的行(在每个更改的代码块的开头):
@@ -296,7 +296,8 @@
Run Code Online (Sandbox Code Playgroud)
我知道它们与行号有关,有多少行改变了,但到目前为止我还无法弄清楚细节.
输出diff文件的语法是什么(至少是主要部分)?
查看GNU diffutils 的文档.在那里你会找到这个部分:
接下来是一个或多个差异; 每个块显示文件不同的一个区域.统一格式帅哥看起来像这样:
Run Code Online (Sandbox Code Playgroud)@@ from-file-line-numbers to-file-line-numbers @@ line-from-either-file line-from-either-file...如果块只包含一行,则只显示其起始行号.否则它的行号看起来像'开始,计数'.一个空的大块被认为是从大块后面的一行开始的.
如果一个Hunk及其上下文包含两行或更多行,则其行号看起来像'start,count'.否则只显示其结束行号.一个空的大块被认为是在大块之前的行结束.
两个文件共有的行以空格字符开头.两个文件之间实际不同的行在左侧打印列中具有以下指示符之一:
'+'这里添加了一行到第一个文件.
' - '此处从第一个文件中删除了一行.