4749588713
Ok this really should be the good version. The option handling has been reworked to be automation safe. Currently to import the -mm tree I have to work around git-apply by using patch. Because some of Andrews patches in quilt will only apply with fuzz. I started out implementing a --fuzz option and then I realized fuzz is not a very safe concept for an automated system. What you really want is a minimum number of context lines that must match. This allows policy to be set without knowing how many lines of context a patch actually provides. By default the policy remains to match all provided lines of context. Allowng git-apply to match a restricted set of context makes it much easier to import the -mm tree into git. I am still only processing 1.5 to 1.6 patches a second for the 692 patches in 2.6.17-rc1-mm2 is still painful but it does help. If I just loop through all of Andrews patches in order and run git-apply --index -C1 I process the entire patchset in 1m53s or about 6 patches per second. So running git-mailinfo, git-write-tree, git-commit-tree, and git-update-ref everytime has a measurable impact, and shows things can be speeded up even more. All of these timings were taking on my poor 700Mhz Athlon with 512MB of ram. So people with fast machiens should see much better performance. When a match is found after the number of context are reduced a warning is generated. Since this is a rare event and possibly dangerous this seems to make sense. Unless you are patching a single file the error message is a little bit terse at the moment, but it should be easy to go back and fix. I have also updated the documentation for git-apply to reflect the new -C option that sets the minimum number of context lines that must match. Signed-off-by: Eric W. Biederman <ebiederm@xmission.com> Signed-off-by: Junio C Hamano <junkio@cox.net>
148 lines
4.4 KiB
Plaintext
148 lines
4.4 KiB
Plaintext
git-apply(1)
|
|
============
|
|
|
|
NAME
|
|
----
|
|
git-apply - Apply patch on a git index file and a work tree
|
|
|
|
|
|
SYNOPSIS
|
|
--------
|
|
[verse]
|
|
'git-apply' [--stat] [--numstat] [--summary] [--check] [--index] [--apply]
|
|
[--no-add] [--index-info] [--allow-binary-replacement] [-z] [-pNUM]
|
|
[-CNUM] [--whitespace=<nowarn|warn|error|error-all|strip>]
|
|
[<patch>...]
|
|
|
|
DESCRIPTION
|
|
-----------
|
|
Reads supplied diff output and applies it on a git index file
|
|
and a work tree.
|
|
|
|
OPTIONS
|
|
-------
|
|
<patch>...::
|
|
The files to read patch from. '-' can be used to read
|
|
from the standard input.
|
|
|
|
--stat::
|
|
Instead of applying the patch, output diffstat for the
|
|
input. Turns off "apply".
|
|
|
|
--numstat::
|
|
Similar to \--stat, but shows number of added and
|
|
deleted lines in decimal notation and pathname without
|
|
abbreviation, to make it more machine friendly. Turns
|
|
off "apply".
|
|
|
|
--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.
|
|
Turns off "apply".
|
|
|
|
--check::
|
|
Instead of applying the patch, see if the patch is
|
|
applicable to the current work tree and/or the index
|
|
file and detects errors. Turns off "apply".
|
|
|
|
--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.
|
|
|
|
--index-info::
|
|
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
|
|
the original version of the blob is available locally,
|
|
outputs information about them to the standard output.
|
|
|
|
-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.
|
|
|
|
-p<n>::
|
|
Remove <n> leading slashes from traditional diff paths. The
|
|
default is 1.
|
|
|
|
-C<n>::
|
|
Ensure at least <n> lines of surrounding context match before
|
|
and after each change. When fewer lines of surrounding
|
|
context exist they all most match. By default no context is
|
|
ever ignored.
|
|
|
|
--apply::
|
|
If you use any of the options marked ``Turns off
|
|
"apply"'' above, git-apply reads and outputs the
|
|
information you asked without actually applying the
|
|
patch. Give this flag after those flags to also apply
|
|
the patch.
|
|
|
|
--no-add::
|
|
When applying a patch, ignore additions made by the
|
|
patch. This can be used to extract common part between
|
|
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.
|
|
|
|
--allow-binary-replacement::
|
|
When applying a patch, which is a git-enhanced patch
|
|
that was prepared to record the pre- and post-image object
|
|
name in full, and the path being patched exactly matches
|
|
the object the patch applies to (i.e. "index" line's
|
|
pre-image object name is what is in the working tree),
|
|
and the post-image object is available in the object
|
|
database, use the post-image object as the patch
|
|
result. This allows binary files to be patched in a
|
|
very limited way.
|
|
|
|
--whitespace=<option>::
|
|
When applying a patch, detect a new or modified line
|
|
that ends with trailing whitespaces (this includes a
|
|
line that solely consists of whitespaces). By default,
|
|
the command outputs warning messages and applies the
|
|
patch.
|
|
When `git-apply` is used for statistics and not applying a
|
|
patch, it defaults to `nowarn`.
|
|
You can use different `<option>` to control this
|
|
behaviour:
|
|
+
|
|
* `nowarn` turns off the trailing whitespace warning.
|
|
* `warn` outputs warnings for a few such errors, but applies the
|
|
patch (default).
|
|
* `error` outputs warnings for a few such errors, and refuses
|
|
to apply the patch.
|
|
* `error-all` is similar to `error` but shows all errors.
|
|
* `strip` outputs warnings for a few such errors, strips out the
|
|
trailing whitespaces and applies the patch.
|
|
|
|
|
|
Configuration
|
|
-------------
|
|
|
|
apply.whitespace::
|
|
When no `--whitespace` flag is given from the command
|
|
line, this configuration item is used as the default.
|
|
|
|
|
|
Author
|
|
------
|
|
Written by Linus Torvalds <torvalds@osdl.org>
|
|
|
|
Documentation
|
|
--------------
|
|
Documentation by Junio C Hamano
|
|
|
|
GIT
|
|
---
|
|
Part of the gitlink:git[7] suite
|
|
|