diff.autoRefreshIndex::
	When using 'git diff' to compare with work tree
	files, do not consider stat-only change 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::
	A comma separated list of `--dirstat` parameters specifying the
	default behavior of the `--dirstat` option to linkgit:git-diff[1]`
	and friends. The defaults can be overridden on the command line
	(using `--dirstat=<param1,param2,...>`). 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.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.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' also honors
	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.

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 (1) and (2).

diff.noprefix::
	If set, 'git diff' does not show any source or destination prefix.

diff.orderFile::
	File indicating how to order files within a diff.
	See the '-O' option to linkgit:git-diff[1] for details.
	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 when performing the copy/rename
	detection; equivalent to the 'git diff' option `-l`.

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>.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.tool::
	Controls which diff tool is used by linkgit:git-difftool[1].
	This variable overrides the value configured in `merge.tool`.
	The list below shows the valid built-in values.
	Any other value is treated as a custom diff tool and requires
	that a corresponding difftool.<tool>.cmd variable is defined.

include::mergetools-diff.txt[]

diff.indentHeuristic::
	Set this option to `true` to enable experimental 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::
	A comma separated list of `old`, `new`, `context`, that
	specifies how whitespace errors on lines are highlighted
	with `color.diff.whitespace`.  Can be overridden by the
	command line option `--ws-error-highlight=<kind>`
