2005-06-22 11:30:17 +02:00
|
|
|
git-apply(1)
|
|
|
|
============
|
|
|
|
|
|
|
|
NAME
|
|
|
|
----
|
2007-01-19 00:53:37 +01:00
|
|
|
git-apply - Apply a patch on a git index file and a working tree
|
2005-06-22 11:30:17 +02:00
|
|
|
|
|
|
|
|
|
|
|
SYNOPSIS
|
|
|
|
--------
|
2005-12-31 18:37:15 +01:00
|
|
|
[verse]
|
2007-04-16 08:20:40 +02:00
|
|
|
'git-apply' [--stat] [--numstat] [--summary] [--check] [--index]
|
2007-09-18 00:34:06 +02:00
|
|
|
[--apply] [--no-add] [--build-fake-ancestor <file>] [-R | --reverse]
|
2007-04-16 08:20:40 +02:00
|
|
|
[--allow-binary-replacement | --binary] [--reject] [-z]
|
|
|
|
[-pNUM] [-CNUM] [--inaccurate-eof] [--cached]
|
2007-11-24 20:57:41 +01:00
|
|
|
[--whitespace=<nowarn|warn|fix|error|error-all>]
|
2007-04-16 08:20:40 +02:00
|
|
|
[--exclude=PATH] [--verbose] [<patch>...]
|
2005-06-22 11:30:17 +02:00
|
|
|
|
|
|
|
DESCRIPTION
|
|
|
|
-----------
|
2005-10-06 00:08:26 +02:00
|
|
|
Reads supplied diff output and applies it on a git index file
|
2005-06-22 11:30:17 +02:00
|
|
|
and a work tree.
|
|
|
|
|
|
|
|
OPTIONS
|
|
|
|
-------
|
2005-07-14 05:28:55 +02:00
|
|
|
<patch>...::
|
|
|
|
The files to read patch from. '-' can be used to read
|
|
|
|
from the standard input.
|
2005-06-22 11:30:17 +02:00
|
|
|
|
|
|
|
--stat::
|
|
|
|
Instead of applying the patch, output diffstat for the
|
2005-07-14 05:28:55 +02:00
|
|
|
input. Turns off "apply".
|
2005-06-22 11:30:17 +02:00
|
|
|
|
2005-10-28 11:43:31 +02:00
|
|
|
--numstat::
|
|
|
|
Similar to \--stat, but shows number of added and
|
|
|
|
deleted lines in decimal notation and pathname without
|
2006-12-26 09:15:26 +01:00
|
|
|
abbreviation, to make it more machine friendly. For
|
|
|
|
binary files, outputs two `-` instead of saying
|
|
|
|
`0 0`. Turns off "apply".
|
2005-10-28 11:43:31 +02:00
|
|
|
|
2005-06-22 11:30:17 +02:00
|
|
|
--summary::
|
|
|
|
Instead of applying the patch, output a condensed
|
|
|
|
summary of information obtained from git diff extended
|
|
|
|
headers, such as creations, renames and mode changes.
|
2005-07-14 05:28:55 +02:00
|
|
|
Turns off "apply".
|
2005-06-22 11:30:17 +02:00
|
|
|
|
|
|
|
--check::
|
|
|
|
Instead of applying the patch, see if the patch is
|
|
|
|
applicable to the current work tree and/or the index
|
2005-07-14 05:28:55 +02:00
|
|
|
file and detects errors. Turns off "apply".
|
2005-06-22 11:30:17 +02:00
|
|
|
|
|
|
|
--index::
|
|
|
|
When --check is in effect, or when applying the patch
|
|
|
|
(which is the default when none of the options that
|
|
|
|
disables it is in effect), make sure the patch is
|
|
|
|
applicable to what the current index file records. If
|
|
|
|
the file to be patched in the work tree is not
|
|
|
|
up-to-date, it is flagged as an error. This flag also
|
|
|
|
causes the index file to be updated.
|
|
|
|
|
2006-08-25 02:56:55 +02:00
|
|
|
--cached::
|
|
|
|
Apply a patch without touching the working tree. Instead, take the
|
|
|
|
cached data, apply the patch, and store the result in the index,
|
|
|
|
without using the working tree. This implies '--index'.
|
|
|
|
|
2007-09-18 00:34:06 +02:00
|
|
|
--build-fake-ancestor <file>::
|
2005-10-15 06:56:46 +02:00
|
|
|
Newer git-diff output has embedded 'index information'
|
|
|
|
for each blob to help identify the original version that
|
|
|
|
the patch applies to. When this flag is given, and if
|
2007-09-18 00:34:06 +02:00
|
|
|
the original versions of the blobs is available locally,
|
|
|
|
builds a temporary index containing those blobs.
|
|
|
|
+
|
|
|
|
When a pure mode change is encountered (which has no index information),
|
|
|
|
the information is read from the current index instead.
|
2005-10-15 06:56:46 +02:00
|
|
|
|
2008-06-08 03:36:09 +02:00
|
|
|
-R::
|
|
|
|
--reverse::
|
2006-08-25 02:56:55 +02:00
|
|
|
Apply the patch in reverse.
|
|
|
|
|
|
|
|
--reject::
|
2007-12-29 07:20:38 +01:00
|
|
|
For atomicity, linkgit:git-apply[1] by default fails the whole patch and
|
2006-08-25 02:56:55 +02:00
|
|
|
does not touch the working tree when some of the hunks
|
|
|
|
do not apply. This option makes it apply
|
2006-08-28 02:51:05 +02:00
|
|
|
the parts of the patch that are applicable, and leave the
|
2006-08-28 00:53:20 +02:00
|
|
|
rejected hunks in corresponding *.rej files.
|
2006-08-25 02:56:55 +02:00
|
|
|
|
2005-10-15 06:56:46 +02:00
|
|
|
-z::
|
|
|
|
When showing the index information, do not munge paths,
|
|
|
|
but use NUL terminated machine readable format. Without
|
|
|
|
this flag, the pathnames output will have TAB, LF, and
|
|
|
|
backslash characters replaced with `\t`, `\n`, and `\\`,
|
|
|
|
respectively.
|
|
|
|
|
2006-01-31 06:36:24 +01:00
|
|
|
-p<n>::
|
|
|
|
Remove <n> leading slashes from traditional diff paths. The
|
|
|
|
default is 1.
|
|
|
|
|
2006-04-10 11:33:06 +02:00
|
|
|
-C<n>::
|
|
|
|
Ensure at least <n> lines of surrounding context match before
|
|
|
|
and after each change. When fewer lines of surrounding
|
2006-06-07 20:32:33 +02:00
|
|
|
context exist they all must match. By default no context is
|
2006-04-10 11:33:06 +02:00
|
|
|
ever ignored.
|
|
|
|
|
2006-09-17 12:55:38 +02:00
|
|
|
--unidiff-zero::
|
2007-12-29 07:20:38 +01:00
|
|
|
By default, linkgit:git-apply[1] expects that the patch being
|
2006-09-17 12:55:38 +02:00
|
|
|
applied is a unified diff with at least one line of context.
|
|
|
|
This provides good safety measures, but breaks down when
|
|
|
|
applying a diff generated with --unified=0. To bypass these
|
|
|
|
checks use '--unidiff-zero'.
|
|
|
|
+
|
|
|
|
Note, for the reasons stated above usage of context-free patches are
|
|
|
|
discouraged.
|
|
|
|
|
2005-07-14 05:28:55 +02:00
|
|
|
--apply::
|
2006-08-25 02:56:55 +02:00
|
|
|
If you use any of the options marked "Turns off
|
2007-12-29 07:20:38 +01:00
|
|
|
'apply'" above, linkgit:git-apply[1] reads and outputs the
|
2005-07-14 05:28:55 +02:00
|
|
|
information you asked without actually applying the
|
|
|
|
patch. Give this flag after those flags to also apply
|
|
|
|
the patch.
|
|
|
|
|
2005-11-10 05:53:54 +01:00
|
|
|
--no-add::
|
|
|
|
When applying a patch, ignore additions made by the
|
2007-12-12 09:14:20 +01:00
|
|
|
patch. This can be used to extract the common part between
|
2005-11-10 05:53:54 +01:00
|
|
|
two files by first running `diff` on them and applying
|
|
|
|
the result with this option, which would apply the
|
|
|
|
deletion part but not addition part.
|
2005-06-22 11:30:17 +02:00
|
|
|
|
2008-06-08 03:36:09 +02:00
|
|
|
--allow-binary-replacement::
|
|
|
|
--binary::
|
2006-09-07 07:45:21 +02:00
|
|
|
Historically we did not allow binary patch applied
|
|
|
|
without an explicit permission from the user, and this
|
|
|
|
flag was the way to do so. Currently we always allow binary
|
|
|
|
patch application, so this is a no-op.
|
2005-11-17 06:32:44 +01:00
|
|
|
|
2006-08-25 02:56:55 +02:00
|
|
|
--exclude=<path-pattern>::
|
|
|
|
Don't apply changes to files matching the given path pattern. This can
|
|
|
|
be useful when importing patchsets, where you want to exclude certain
|
|
|
|
files or directories.
|
|
|
|
|
2007-11-24 20:57:41 +01:00
|
|
|
--whitespace=<action>::
|
|
|
|
When applying a patch, detect a new or modified line that has
|
|
|
|
whitespace errors. What are considered whitespace errors is
|
|
|
|
controlled by `core.whitespace` configuration. By default,
|
|
|
|
trailing whitespaces (including lines that solely consist of
|
|
|
|
whitespaces) and a space character that is immediately followed
|
|
|
|
by a tab character inside the initial indent of the line are
|
|
|
|
considered whitespace errors.
|
|
|
|
+
|
|
|
|
By default, the command outputs warning messages but applies the patch.
|
2007-12-29 07:20:38 +01:00
|
|
|
When linkgit:git-apply[1] is used for statistics and not applying a
|
2007-11-24 20:57:41 +01:00
|
|
|
patch, it defaults to `nowarn`.
|
|
|
|
+
|
|
|
|
You can use different `<action>` to control this
|
|
|
|
behavior:
|
2006-03-02 09:45:48 +01:00
|
|
|
+
|
|
|
|
* `nowarn` turns off the trailing whitespace warning.
|
|
|
|
* `warn` outputs warnings for a few such errors, but applies the
|
2007-11-24 20:57:41 +01:00
|
|
|
patch as-is (default).
|
|
|
|
* `fix` outputs warnings for a few such errors, and applies the
|
|
|
|
patch after fixing them (`strip` is a synonym --- the tool
|
|
|
|
used to consider only trailing whitespaces as errors, and the
|
|
|
|
fix involved 'stripping' them, but modern gits do more).
|
2006-03-02 09:45:48 +01:00
|
|
|
* `error` outputs warnings for a few such errors, and refuses
|
|
|
|
to apply the patch.
|
|
|
|
* `error-all` is similar to `error` but shows all errors.
|
|
|
|
|
2006-11-18 06:05:11 +01:00
|
|
|
--inaccurate-eof::
|
2006-08-25 02:56:55 +02:00
|
|
|
Under certain circumstances, some versions of diff do not correctly
|
|
|
|
detect a missing new-line at the end of the file. As a result, patches
|
|
|
|
created by such diff programs do not record incomplete lines
|
|
|
|
correctly. This option adds support for applying such patches by
|
|
|
|
working around this bug.
|
|
|
|
|
2008-06-08 03:36:09 +02:00
|
|
|
-v::
|
|
|
|
--verbose::
|
2006-08-25 02:56:55 +02:00
|
|
|
Report progress to stderr. By default, only a message about the
|
|
|
|
current patch being applied will be printed. This option will cause
|
|
|
|
additional information to be reported.
|
2006-03-02 09:45:48 +01:00
|
|
|
|
|
|
|
Configuration
|
|
|
|
-------------
|
|
|
|
|
|
|
|
apply.whitespace::
|
|
|
|
When no `--whitespace` flag is given from the command
|
|
|
|
line, this configuration item is used as the default.
|
|
|
|
|
2007-08-15 19:22:09 +02:00
|
|
|
Submodules
|
|
|
|
----------
|
2007-12-29 07:20:38 +01:00
|
|
|
If the patch contains any changes to submodules then linkgit:git-apply[1]
|
2007-08-15 19:22:09 +02:00
|
|
|
treats these changes as follows.
|
|
|
|
|
|
|
|
If --index is specified (explicitly or implicitly), then the submodule
|
|
|
|
commits must match the index exactly for the patch to apply. If any
|
|
|
|
of the submodules are checked-out, then these check-outs are completely
|
|
|
|
ignored, i.e., they are not required to be up-to-date or clean and they
|
|
|
|
are not updated.
|
|
|
|
|
|
|
|
If --index is not specified, then the submodule commits in the patch
|
|
|
|
are ignored and only the absence of presence of the corresponding
|
|
|
|
subdirectory is checked and (if possible) updated.
|
2006-03-02 09:45:48 +01:00
|
|
|
|
2005-06-22 11:30:17 +02:00
|
|
|
Author
|
|
|
|
------
|
|
|
|
Written by Linus Torvalds <torvalds@osdl.org>
|
|
|
|
|
|
|
|
Documentation
|
|
|
|
--------------
|
|
|
|
Documentation by Junio C Hamano
|
|
|
|
|
|
|
|
GIT
|
|
|
|
---
|
2008-06-06 09:07:32 +02:00
|
|
|
Part of the linkgit:git[1] suite
|