What is the format of a patch file?
Solution 1:
The -u
option you used specifies the unified format. In that format the first two lines is a header: ---
is the original file, +++
is the new file, and the timestamps.
@@
block headers
That is then followed by chunks (change hunks) that starts with the @@ -R,r +R,r @@
syntax.
Those are two ranges, the one with the -
is the range for the chunk in the original file, and the one with the +
the range in the new file. The R
designates the line number where the diff operation is started.
The numbers after the comma are the number of affected lines in each file.
- Every time you remove a line, the
+r
number will be smaller than-r
. - Every time you add a line, the
+r
number will be bigger than-r
- Changing a line will add
0
to the+r
number. (same scope of lines)
Chunks of code lines
Within these chunks lines are identified as additions or deletions -
means delete, +
means addition. Lines that did not change in that chunk will have neither +
or -
front of it.
In your example it means there are two chunks, or sections, that changed between the two files and the lines with +
in it are the new ones added, nothing was deleted.
You can find much more information about the syntax by doing a google search for unified diff.
Solution 2:
The old file name
--- src.orig/java/org/apache/nutch/analysis/NutchAnalysisConstants.java 2009-03-10 11:34:01.000000000 -0700
The new file name
+++ src/java/org/apache/nutch/analysis/NutchAnalysisConstants.java 2009-03-10 14:11:55.000000000 -0700
-
-4
: chunk begins at line 4 in old file (including context lines); -
9
: number of lines in the chunk in old file including context lines (so total of lines that have a-
or nothing in front of them); -
+4
: chunk begins at line 4 in the new file; -
12
: number of lines in the chunk in new file including context lines (so total of lines that have a+
or nothing in front of them).
Notice: I changed the diff to include a modified line, so a deleted line followed by an added line.
@@ -4,9 +4,12 @@
+ int CJK = 21;
+ int DIGIT = 22;
- int DEFAULT = 0;
+ int DEFAULT = 42;
String[] tokenImage = {
"<EOF>",
+ "\"OR\"",
"<WORD>",
"<ACRONYM>",
"<SIGRAM>",
Same as above, but notice the chunk in the new file starts 3 lines further because the previous chunk added a net worth of 3 lines.
@@ -39,6 +42,8 @@
"\"\\\"\"",
"\":\"",
"\"/\"",
+ "\"(\"",
+ "\")\"",
"\".\"",
"\"@\"",
"\"\\\'\"",