- publishing free software manuals
Comparing and Merging Files with GNU diff and patch
by David MacKenzie, Paul Eggert, and Richard Stallman
Paperback (6"x9"), 120 pages
ISBN 0954161750
RRP £12.95 ($19.95)

"Well packaged... the quality of information is excellent" --- Linux User and Developer Magazine (Issue 36, Feb 2004) Get a printed copy>>> Detailed Description of Context Format

The context output format starts with a two-line header, which looks like this:

*** from-file from-file-modification-time
--- to-file to-file-modification time

The time stamp normally looks like ‘2002-02-21 23:30:39.942229878 -0800’ to indicate the date, time with fractional seconds, and time zone in Internet RFC 2822 format. However, a traditional time stamp like ‘Thu Feb 21 23:30:39 2002’ is used if the LC_TIME locale category is either ‘C’ or ‘POSIX’.

You can change the header's content with the --label=label option; see section 2.3.4 Showing Alternate File Names.

Next come one or more hunks of differences; each hunk shows one area where the files differ. Context format hunks look like this:

*** from-file-line-range ****
--- to-file-line-range ----

The lines of context around the lines that differ start with two space characters. The lines that differ between the two files start with one of the following indicator characters, followed by a space character:

A line that is part of a group of one or more lines that changed between the two files. There is a corresponding group of lines marked with ‘!’ in the part of this hunk for the other file.
An "inserted" line in the second file that corresponds to nothing in the first file.
A "deleted" line in the first file that corresponds to nothing in the second file.

If all of the changes in a hunk are insertions, the lines of from-file are omitted. If all of the changes are deletions, the lines of to-file are omitted.

ISBN 0954161750Comparing and Merging Files with GNU diff and patchSee the print edition