统一差异:大块头的第二个@@之后的文本

unified diff: text after second @@ of a hunk

我在网上找不到统一差异格式的规范。通常人们会在大块头的第二个 @@ 之后看到差异文件中的文本,如下所示:

@@ -209,4 +196,4 @@ cleanup:
    _TEMPLATE(T, vec) (X);
 }

-#endif
\ No newline at end of file
+#endif

第二个 @@ 之后的文字重要吗?

这也难倒了我,因为它破坏了我正在使用的 open-source 补丁解析器。这似乎连工具制造商都不太理解。

显然 @@ 之后的文本是由 --show-c-function 标记生成的,以进行区分,记录在案 here。在您的情况下,标题有点用词不当,因为您的文本不是函数定义,而是(可能)当 diff 在编辑行上方查找未缩进的最多标识符时被捕获的标签。

您可以在此处查看此功能如何工作的示例:

正常

diff --unified=3 <(curl -s https://raw.githubusercontent.com/gcc-mirror/gcc/97574c57cf26ace9b8609575bbab66465924fef7/gcc/config/sparc/sparc.c) <(curl -s https://raw.githubusercontent.com/gcc-mirror/gcc/17fc6eeba9352b97ba16d64fd1de9a5bdc081062/gcc/config/sparc/sparc.c) | sed -n '3p'

输出:@@ -648,7 +648,6 @@

--show-c-function

diff --show-c-function --unified=3 <(curl -s https://raw.githubusercontent.com/gcc-mirror/gcc/97574c57cf26ace9b8609575bbab66465924fef7/gcc/config/sparc/sparc.c) <(curl -s https://raw.githubusercontent.com/gcc-mirror/gcc/17fc6eeba9352b97ba16d64fd1de9a5bdc081062/gcc/config/sparc/sparc.c) | sed -n '3p'

输出:@@ -648,7 +648,6 @@ static reg_class_t sparc_secondary_reloa

据我所知,@@ 之后的文字主要供人阅读,如果您愿意,可以放心地忽略它。