diff options
Diffstat (limited to 'Documentation/config/diff.adoc')
-rw-r--r-- | Documentation/config/diff.adoc | 267 |
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]. |