| 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>>> |
10.7 Applying Patches in Other Directories
The -d directory or --directory=directory
option to patch makes directory directory the current
directory for interpreting both file names in the patch file, and file
names given as arguments to other options (such as -B and
-o). For example, while in a mail reading program, you can patch
a file in the ‘/usr/src/emacs’ directory directly from a message
containing the patch like this:
| patch -d /usr/src/emacs
Sometimes the file names given in a patch contain leading directories,
but you keep your files in a directory different from the one given in
the patch. In those cases, you can use the
-pnumber or --strip=number
option to set the file name strip count to number. The strip
count tells patch how many slashes, along with the directory
names between them, to strip from the front of file names. A sequence
of one or more adjacent slashes is counted as a single slash. By
default, patch strips off all leading directories, leaving
just the base file names.
For example, suppose the file name in the patch file is
‘/gnu/src/emacs/etc/NEWS’. Using -p0 gives the
entire file name unmodified, -p1 gives
‘gnu/src/emacs/etc/NEWS’ (no leading slash), -p4 gives
‘etc/NEWS’, and not specifying -p at all gives ‘NEWS’.
patch looks for each file (after any slashes have been stripped)
in the current directory, or if you used the -d directory
option, in that directory.
| ISBN 0954161750 | Comparing and Merging Files with GNU diff and patch | See the print edition |