patch
Normally patch
is invoked like this:
patch <patchfile
The full format for invoking patch
is:
patch options... [origfile [patchfile]] [+ options... [origfile]]...
If you do not specify patchfile, or if patchfile is
`-', patch
reads the patch (that is, the diff
output)
from the standard input.
You can specify one or more of the original files as orig arguments; each one and options for interpreting it is separated from the others with a `+'. See section Multiple Patches in a File, for more information.
If you do not specify an input file on the command line, patch
tries to figure out from the leading text (any text in the patch
that comes before the diff
output) which file to edit. In the
header of a context or unified diff, patch
looks in lines
beginning with `***', `---', or `+++'; among those, it
chooses the shortest name of an existing file. Otherwise, if there is
an `Index:' line in the leading text, patch
tries to use the
file name from that line. If patch
cannot figure out the name of
an existing file from the leading text, it prompts you for the name of
the file to patch.
If the input file does not exist or is read-only, and a suitable RCS or
SCCS file exists, patch
attempts to check out or get the file
before proceeding.
By default, patch
replaces the original input file with the
patched version, after renaming the original file into a backup file
(see section Backup File Names, for a description of how patch
names backup
files). You can also specify where to put the output with the `-o
output-file' or `--output=output-file' option.
patch
.
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 news reading program, you can patch
a file in the `/usr/src/emacs' directory directly from the article
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
`-p[number]' 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. `-p'
with no number given is equivalent to `-p0'. By default,
patch
strips off all leading directories, leaving just the base file
names, except that when a file name given in the patch is a relative
file name and all of its leading directories already exist, patch
does
not strip off the leading directory. (A relative file name is one
that does not start with a slash.)
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.
For example, suppose the file name in the patch file is `/gnu/src/emacs/etc/NEWS'. Using `-p' or `-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'.
Normally, patch
renames an original input file into a backup file
by appending to its name the extension `.orig', or `~' on
systems that do not support long file names. The `-b
backup-suffix' or `--suffix=backup-suffix' option uses
backup-suffix as the backup extension instead.
Alternately, you can specify the extension for backup files with the
SIMPLE_BACKUP_SUFFIX
environment variable, which the options
override.
patch
can also create numbered backup files the way GNU Emacs
does. With this method, instead of having a single backup of each file,
patch
makes a new backup file name each time it patches a file.
For example, the backups of a file named `sink' would be called,
successively, `sink.~1~', `sink.~2~', `sink.~3~', etc.
The `-V backup-style' or
`--version-control=backup-style' option takes as an argument
a method for creating backup file names. You can alternately control
the type of backups that patch
makes with the
VERSION_CONTROL
environment variable, which the `-V' option
overrides. The value of the VERSION_CONTROL
environment variable
and the argument to the `-V' option are like the GNU Emacs
version-control
variable (see section Backup File Names, for more information on backup versions in
Emacs). They also recognize synonyms that are more descriptive. The
valid values are listed below; unique abbreviations are acceptable.
Alternately, you can tell patch
to prepend a prefix, such as a
directory name, to produce backup file names. The `-B
backup-prefix' or `--prefix=backup-prefix' option makes
backup files by prepending backup-prefix to them. If you use this
option, patch
ignores any `-b' option that you give.
If the backup file already exists, patch
creates a new backup
file name by changing the first lowercase letter in the last component
of the file name into uppercase. If there are no more lowercase letters
in the name, it removes the first character from the name. It repeats
this process until it comes up with a backup file name that does not
already exist.
If you specify the output file with the `-o' option, that file is the one that is backed up, not the input file.
The names for reject files (files containing patches that patch
could not find a place to apply) are normally the name of the output
file with `.rej' appended (or `#' on systems that do not
support long file names).
Alternatively, you can tell patch
to place all of the rejected
patches in a single file. The `-r reject-file' or
`--reject-file=reject-file' option uses reject-file as
the reject file name.
patch
Here is a summary of all of the options that patch
accepts.
Older versions of patch
do not accept long-named options or the
`-t', `-E', or `-V' options.
Multiple single-letter options that do not take an argument can be combined into a single command line argument (with only one dash). Brackets ([ and ]) indicate that an option takes an optional argument.
patch
.
patch
Input Format.
patch
patchers.
ed
script. See section Selecting the patch
Input Format.
patch
.
patch
Find Inexact Matches.
patch
.
patch
thinks are reversed or already applied.
See also `-R'. See section Applying Reversed Patches.
patch
Find Inexact Matches.
patch
recognizes, then exit.
patch
Input Format.
patch
thinks are reversed or already applied.
See also `-R'. See section Applying Reversed Patches.
patch
.
patch
.
patch
.
patch
.
patch
.
patch
Input Format.
patch
.
patch
, then exit.
patch
patchers.