Retire git-runstatus for real.
[gitweb.git] / Documentation / git-apply.txt
index f03f661652814d0900f3564c1914b217dc465a01..9ec38f92ba2f9ac51b5cd6ade69758ded31194d6 100644 (file)
@@ -10,10 +10,10 @@ SYNOPSIS
 --------
 [verse]
 'git-apply' [--stat] [--numstat] [--summary] [--check] [--index]
-         [--apply] [--no-add] [--index-info] [-R | --reverse]
+         [--apply] [--no-add] [--build-fake-ancestor <file>] [-R | --reverse]
          [--allow-binary-replacement | --binary] [--reject] [-z]
          [-pNUM] [-CNUM] [--inaccurate-eof] [--cached]
-         [--whitespace=<nowarn|warn|error|error-all|strip>]
+         [--whitespace=<nowarn|warn|fix|error|error-all>]
          [--exclude=PATH] [--verbose] [<patch>...]
 
 DESCRIPTION
@@ -63,12 +63,15 @@ OPTIONS
        cached data, apply the patch, and store the result in the index,
        without using the working tree. This implies '--index'.
 
---index-info::
+--build-fake-ancestor <file>::
        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.
+       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.
 
 -R, --reverse::
        Apply the patch in reverse.
@@ -116,7 +119,7 @@ discouraged.
 
 --no-add::
        When applying a patch, ignore additions made by the
-       patch.  This can be used to extract common part between
+       patch.  This can be used to extract the 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.
@@ -132,25 +135,32 @@ discouraged.
        be useful when importing patchsets, where you want to exclude certain
        files or directories.
 
---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 gitlink:git-apply[1] is used for statistics and not applying a
-       patch, it defaults to `nowarn`.
-       You can use different `<option>` to control this
-       behavior:
+--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.
+When gitlink:git-apply[1] is used for statistics and not applying a
+patch, it defaults to `nowarn`.
++
+You can use different `<action>` to control this
+behavior:
 +
 * `nowarn` turns off the trailing whitespace warning.
 * `warn` outputs warnings for a few such errors, but applies the
-  patch (default).
+  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).
 * `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.
 
 --inaccurate-eof::
        Under certain circumstances, some versions of diff do not correctly
@@ -171,6 +181,20 @@ apply.whitespace::
        When no `--whitespace` flag is given from the command
        line, this configuration item is used as the default.
 
+Submodules
+----------
+If the patch contains any changes to submodules then gitlink:git-apply[1]
+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.
 
 Author
 ------