补丁文件的格式是什么?

问题描述 投票:0回答:4

以下是什么意思?

diff -rBNu src.orig/java/org/apache/nutch/analysis/NutchAnalysisConstants.java src/java/org/apache/nutch/analysis/NutchAnalysisConstants.java
--- src.orig/java/org/apache/nutch/analysis/NutchAnalysisConstants.java 2009-03-10 11:34:01.000000000 -0700
+++ src/java/org/apache/nutch/analysis/NutchAnalysisConstants.java  2009-03-10 14:11:55.000000000 -0700
@@ -4,9 +4,12 @@

+  int CJK = 21;
+  int DIGIT = 22;

   int DEFAULT = 0;

   String[] tokenImage = {
     "<EOF>",
+    "\"OR\"",
     "<WORD>",
     "<ACRONYM>",
     "<SIGRAM>",
@@ -39,6 +42,8 @@
     "\"\\\"\"",
     "\":\"",
     "\"/\"",
+    "\"(\"",
+    "\")\"",
     "\".\"",
     "\"@\"",
     "\"\\\'\"",
patch file-format
4个回答
158
投票

您使用的

-u
选项指定统一格式。在该格式中,前两行是标题:
---
是原始文件,
+++
是新文件,以及时间戳。

@@
块头

然后是以

@@ -R,r +R,r @@
语法开头的块(更改块)。

这是两个范围,带有

-
的一个是原始文件中块的范围,带有
+
的一个是新文件中的范围。
R
指定开始比较操作的行号。

逗号后面的数字是每个文件中受影响的行数

  • 每次删除一行时,
    +r
    数字都会小于
    -r
  • 每次添加一行,
    +r
    数字都会比-r
    更大
  • 更改行会将
    0
    添加到
    +r
    数字。 (线路范围相同)

大量代码行

在这些块中,行被标识为添加或删除

-
表示删除,
+
表示添加。该块中未更改的行前面不会有
+
-

在您的示例中,这意味着两个文件之间有两个块或部分发生了更改,其中带有

+
的行是新添加的,没有删除任何内容。

您可以通过谷歌搜索统一差异来找到有关语法的更多信息。


35
投票

旧文件名

--- src.orig/java/org/apache/nutch/analysis/NutchAnalysisConstants.java 2009-03-10 11:34:01.000000000 -0700

新文件名

+++ src/java/org/apache/nutch/analysis/NutchAnalysisConstants.java  2009-03-10 14:11:55.000000000 -0700
  • -4
    :块(包括上下文中未更改的行)从旧文件中的第 4 行开始;
  • 9
    :旧文件中块中的行数,包括上下文行(因此前面有
    -
    或没有任何内容的行总数);
  • +4
    :块从新文件中的第 4 行开始;
  • 12
    :新文件中块中的行数,包括上下文行(因此前面有
    +
    或没有任何内容的行总数)。

注意:我更改了差异以包含修改后的行,因此删除的行后面跟着添加的行。

@@ -4,9 +4,12 @@

+  int CJK = 21;
+  int DIGIT = 22;

-  int DEFAULT = 0;
+  int DEFAULT = 42;

   String[] tokenImage = {
     "<EOF>",
+    "\"OR\"",
     "<WORD>",
     "<ACRONYM>",
     "<SIGRAM>",

与上面相同,但请注意新文件中的块又开始了 3 行,因为前一个块添加了 3 行的净值。

@@ -39,6 +42,8 @@
     "\"\\\"\"",
     "\":\"",
     "\"/\"",
+    "\"(\"",
+    "\")\"",
     "\".\"",
     "\"@\"",
     "\"\\\'\"",

2
投票

这取决于你要问什么。 Diff 显示两个文件之间的差异。在您的情况下,您从两个不同的地方进行比较

NutchAnalysisConstants.java
并生成有关这些差异的信息。

-r
到 diff 的意思是“递归差异”,尽管在这种情况下它什么也不做,因为你是在比较文件,而不是目录。

-B
表示忽略仅涉及空行的更改。

-N
意味着如果在directory1中我有一个文件,但它不存在于directory2中,diff应该将其视为该文件存在但在directory2中为空(从而有效地为您提供directory1中文件的完整内容).

-u
表示使用统一输出格式,仅GNU diff和GNU patch支持。

至于输出的含义,这个链接可能对您有用。


1
投票

+
字符意味着这些行是自上一个版本的
NutchAnalysisConstants.java
以来添加的。
@@
行告诉您差异已跳转到文件的另一部分,在本例中为原始文件中的第 39 行,或新文件中的第 43 行。

© www.soinside.com 2019 - 2024. All rights reserved.