summaryrefslogtreecommitdiff
path: root/Documentation/config/diff.adoc
diff options
context:
space:
mode:
Diffstat (limited to 'Documentation/config/diff.adoc')
-rw-r--r--Documentation/config/diff.adoc267
1 files changed, 267 insertions, 0 deletions
diff --git a/Documentation/config/diff.adoc b/Documentation/config/diff.adoc
new file mode 100644
index 0000000000..1135a62a0a
--- /dev/null
+++ b/Documentation/config/diff.adoc
@@ -0,0 +1,267 @@
+`diff.autoRefreshIndex`::
+ When using `git diff` to compare with work tree
+ files, do not consider stat-only changes as changed.
+ Instead, silently run `git update-index --refresh` to
+ update the cached stat information for paths whose
+ contents in the work tree match the contents in the
+ index. This option defaults to `true`. Note that this
+ affects only `git diff` Porcelain, and not lower level
+ `diff` commands such as `git diff-files`.
+
+`diff.dirstat`::
+ifdef::git-diff[]
+ A comma separated list of `--dirstat` parameters specifying the
+ default behavior of the `--dirstat` option to `git diff` and friends.
+endif::git-diff[]
+ifndef::git-diff[]
+ A comma separated list of `--dirstat` parameters specifying the
+ default behavior of the `--dirstat` option to linkgit:git-diff[1]
+ and friends.
+endif::git-diff[]
+ The defaults can be overridden on the command line
+ (using `--dirstat=<param>,...`). The fallback defaults
+ (when not changed by `diff.dirstat`) are `changes,noncumulative,3`.
+ The following parameters are available:
++
+--
+`changes`;;
+ Compute the dirstat numbers by counting the lines that have been
+ removed from the source, or added to the destination. This ignores
+ the amount of pure code movements within a file. In other words,
+ rearranging lines in a file is not counted as much as other changes.
+ This is the default behavior when no parameter is given.
+`lines`;;
+ Compute the dirstat numbers by doing the regular line-based diff
+ analysis, and summing the removed/added line counts. (For binary
+ files, count 64-byte chunks instead, since binary files have no
+ natural concept of lines). This is a more expensive `--dirstat`
+ behavior than the `changes` behavior, but it does count rearranged
+ lines within a file as much as other changes. The resulting output
+ is consistent with what you get from the other `--*stat` options.
+`files`;;
+ Compute the dirstat numbers by counting the number of files changed.
+ Each changed file counts equally in the dirstat analysis. This is
+ the computationally cheapest `--dirstat` behavior, since it does
+ not have to look at the file contents at all.
+`cumulative`;;
+ Count changes in a child directory for the parent directory as well.
+ Note that when using `cumulative`, the sum of the percentages
+ reported may exceed 100%. The default (non-cumulative) behavior can
+ be specified with the `noncumulative` parameter.
+_<limit>_;;
+ An integer parameter specifies a cut-off percent (3% by default).
+ Directories contributing less than this percentage of the changes
+ are not shown in the output.
+--
++
+Example: The following will count changed files, while ignoring
+directories with less than 10% of the total amount of changed files,
+and accumulating child directory counts in the parent directories:
+`files,10,cumulative`.
+
+`diff.statNameWidth`::
+ Limit the width of the filename part in `--stat` output. If set, applies
+ to all commands generating `--stat` output except `format-patch`.
+
+`diff.statGraphWidth`::
+ Limit the width of the graph part in `--stat` output. If set, applies
+ to all commands generating `--stat` output except `format-patch`.
+
+`diff.context`::
+ Generate diffs with _<n>_ lines of context instead of the default
+ of 3. This value is overridden by the `-U` option.
+
+`diff.interHunkContext`::
+ Show the context between diff hunks, up to the specified number
+ of lines, thereby fusing the hunks that are close to each other.
+ This value serves as the default for the `--inter-hunk-context`
+ command line option.
+
+`diff.external`::
+ If this config variable is set, diff generation is not
+ performed using the internal diff machinery, but using the
+ given command. Can be overridden with the `GIT_EXTERNAL_DIFF`
+ environment variable. The command is called with parameters
+ as described under "git Diffs" in linkgit:git[1]. Note: if
+ you want to use an external diff program only on a subset of
+ your files, you might want to use linkgit:gitattributes[5] instead.
+
+`diff.trustExitCode`::
+ If this boolean value is set to `true` then the
+ `diff.external` command is expected to return exit code
+ 0 if it considers the input files to be equal or 1 if it
+ considers them to be different, like `diff`(1).
+ If it is set to `false`, which is the default, then the command
+ is expected to return exit code `0` regardless of equality.
+ Any other exit code causes Git to report a fatal error.
+
+`diff.ignoreSubmodules`::
+ Sets the default value of `--ignore-submodules`. Note that this
+ affects only `git diff` Porcelain, and not lower level `diff`
+ commands such as `git diff-files`. `git checkout`
+ and `git switch` also honor
+ this setting when reporting uncommitted changes. Setting it to
+ `all` disables the submodule summary normally shown by `git commit`
+ and `git status` when `status.submoduleSummary` is set unless it is
+ overridden by using the `--ignore-submodules` command-line option.
+ The `git submodule` commands are not affected by this setting.
+ By default this is set to untracked so that any untracked
+ submodules are ignored.
+
+`diff.mnemonicPrefix`::
+ If set, `git diff` uses a prefix pair that is different from the
+ standard `a/` and `b/` depending on what is being compared. When
+ this configuration is in effect, reverse diff output also swaps
+ the order of the prefixes:
+`git diff`;;
+ compares the (i)ndex and the (w)ork tree;
+`git diff HEAD`;;
+ compares a (c)ommit and the (w)ork tree;
+`git diff --cached`;;
+ compares a (c)ommit and the (i)ndex;
+`git diff HEAD:<file1> <file2>`;;
+ compares an (o)bject and a (w)ork tree entity;
+`git diff --no-index <a> <b>`;;
+ compares two non-git things _<a>_ and _<b>_.
+
+`diff.noPrefix`::
+ If set, `git diff` does not show any source or destination prefix.
+
+`diff.srcPrefix`::
+ If set, `git diff` uses this source prefix. Defaults to `a/`.
+
+`diff.dstPrefix`::
+ If set, `git diff` uses this destination prefix. Defaults to `b/`.
+
+`diff.relative`::
+ If set to `true`, `git diff` does not show changes outside of the directory
+ and show pathnames relative to the current directory.
+
+`diff.orderFile`::
+ File indicating how to order files within a diff.
+ifdef::git-diff[]
+ See the `-O` option for details.
+endif::git-diff[]
+ifndef::git-diff[]
+ See the `-O` option to linkgit:git-diff[1] for details.
+endif::git-diff[]
+ If `diff.orderFile` is a relative pathname, it is treated as
+ relative to the top of the working tree.
+
+`diff.renameLimit`::
+ The number of files to consider in the exhaustive portion of
+ copy/rename detection; equivalent to the `git diff` option
+ `-l`. If not set, the default value is currently 1000. This
+ setting has no effect if rename detection is turned off.
+
+`diff.renames`::
+ Whether and how Git detects renames. If set to `false`,
+ rename detection is disabled. If set to `true`, basic rename
+ detection is enabled. If set to `copies` or `copy`, Git will
+ detect copies, as well. Defaults to `true`. Note that this
+ affects only `git diff` Porcelain like linkgit:git-diff[1] and
+ linkgit:git-log[1], and not lower level commands such as
+ linkgit:git-diff-files[1].
+
+`diff.suppressBlankEmpty`::
+ A boolean to inhibit the standard behavior of printing a space
+ before each empty output line. Defaults to `false`.
+
+`diff.submodule`::
+ Specify the format in which differences in submodules are
+ shown. The `short` format just shows the names of the commits
+ at the beginning and end of the range. The `log` format lists
+ the commits in the range like linkgit:git-submodule[1] `summary`
+ does. The `diff` format shows an inline diff of the changed
+ contents of the submodule. Defaults to `short`.
+
+`diff.wordRegex`::
+ A POSIX Extended Regular Expression used to determine what is a "word"
+ when performing word-by-word difference calculations. Character
+ sequences that match the regular expression are "words", all other
+ characters are *ignorable* whitespace.
+
+`diff.<driver>.command`::
+ The custom diff driver command. See linkgit:gitattributes[5]
+ for details.
+
+`diff.<driver>.trustExitCode`::
+ If this boolean value is set to `true` then the
+ `diff.<driver>.command` command is expected to return exit code
+ 0 if it considers the input files to be equal or 1 if it
+ considers them to be different, like `diff`(1).
+ If it is set to `false`, which is the default, then the command
+ is expected to return exit code 0 regardless of equality.
+ Any other exit code causes Git to report a fatal error.
+
+`diff.<driver>.xfuncname`::
+ The regular expression that the diff driver should use to
+ recognize the hunk header. A built-in pattern may also be used.
+ See linkgit:gitattributes[5] for details.
+
+`diff.<driver>.binary`::
+ Set this option to `true` to make the diff driver treat files as
+ binary. See linkgit:gitattributes[5] for details.
+
+`diff.<driver>.textconv`::
+ The command that the diff driver should call to generate the
+ text-converted version of a file. The result of the
+ conversion is used to generate a human-readable diff. See
+ linkgit:gitattributes[5] for details.
+
+`diff.<driver>.wordRegex`::
+ The regular expression that the diff driver should use to
+ split words in a line. See linkgit:gitattributes[5] for
+ details.
+
+`diff.<driver>.cachetextconv`::
+ Set this option to `true` to make the diff driver cache the text
+ conversion outputs. See linkgit:gitattributes[5] for details.
+
+`diff.indentHeuristic`::
+ Set this option to `false` to disable the default heuristics
+ that shift diff hunk boundaries to make patches easier to read.
+
+`diff.algorithm`::
+ Choose a diff algorithm. The variants are as follows:
++
+--
+`default`;;
+`myers`;;
+ The basic greedy diff algorithm. Currently, this is the default.
+`minimal`;;
+ Spend extra time to make sure the smallest possible diff is
+ produced.
+`patience`;;
+ Use "patience diff" algorithm when generating patches.
+`histogram`;;
+ This algorithm extends the patience algorithm to "support
+ low-occurrence common elements".
+--
++
+
+`diff.wsErrorHighlight`::
+ Highlight whitespace errors in the `context`, `old` or `new`
+ lines of the diff. Multiple values are separated by comma,
+ `none` resets previous values, `default` reset the list to
+ `new` and `all` is a shorthand for `old,new,context`. The
+ whitespace errors are colored with `color.diff.whitespace`.
+ The command line option `--ws-error-highlight=<kind>`
+ overrides this setting.
+
+`diff.colorMoved`::
+ If set to either a valid _<mode>_ or a `true` value, moved lines
+ in a diff are colored differently.
+ifdef::git-diff[]
+ For details of valid modes see `--color-moved`.
+endif::git-diff[]
+ifndef::git-diff[]
+ For details of valid modes see `--color-moved` in linkgit:git-diff[1].
+endif::git-diff[]
+ If simply set to `true` the default color mode will be used. When
+ set to `false`, moved lines are not colored.
+
+`diff.colorMovedWS`::
+ When moved lines are colored using e.g. the `diff.colorMoved` setting,
+ this option controls the mode how spaces are treated.
+ For details of valid modes see `--color-moved-ws` in linkgit:git-diff[1].