config.txt: move log.* to a separate file
[gitweb.git] / Documentation / config.txt
index 77e45e5219aab24e59f6eb52a6394ad9de8ab66d..cce89ea50c3258307214715f34a2c162dbd86b36 100644 (file)
@@ -293,1316 +293,77 @@ include::config/core.txt[]
 
 include::config/add.txt[]
 
-alias.*::
-       Command aliases for the linkgit:git[1] command wrapper - e.g.
-       after defining "alias.last = cat-file commit HEAD", the invocation
-       "git last" is equivalent to "git cat-file commit HEAD". To avoid
-       confusion and troubles with script usage, aliases that
-       hide existing Git commands are ignored. Arguments are split by
-       spaces, the usual shell quoting and escaping is supported.
-       A quote pair or a backslash can be used to quote them.
-+
-If the alias expansion is prefixed with an exclamation point,
-it will be treated as a shell command.  For example, defining
-"alias.new = !gitk --all --not ORIG_HEAD", the invocation
-"git new" is equivalent to running the shell command
-"gitk --all --not ORIG_HEAD".  Note that shell commands will be
-executed from the top-level directory of a repository, which may
-not necessarily be the current directory.
-`GIT_PREFIX` is set as returned by running 'git rev-parse --show-prefix'
-from the original current directory. See linkgit:git-rev-parse[1].
-
-am.keepcr::
-       If true, git-am will call git-mailsplit for patches in mbox format
-       with parameter `--keep-cr`. In this case git-mailsplit will
-       not remove `\r` from lines ending with `\r\n`. Can be overridden
-       by giving `--no-keep-cr` from the command line.
-       See linkgit:git-am[1], linkgit:git-mailsplit[1].
-
-am.threeWay::
-       By default, `git am` will fail if the patch does not apply cleanly. When
-       set to true, this setting tells `git am` to fall back on 3-way merge if
-       the patch records the identity of blobs it is supposed to apply to and
-       we have those blobs available locally (equivalent to giving the `--3way`
-       option from the command line). Defaults to `false`.
-       See linkgit:git-am[1].
-
-apply.ignoreWhitespace::
-       When set to 'change', tells 'git apply' to ignore changes in
-       whitespace, in the same way as the `--ignore-space-change`
-       option.
-       When set to one of: no, none, never, false tells 'git apply' to
-       respect all whitespace differences.
-       See linkgit:git-apply[1].
-
-apply.whitespace::
-       Tells 'git apply' how to handle whitespaces, in the same way
-       as the `--whitespace` option. See linkgit:git-apply[1].
-
-blame.blankBoundary::
-       Show blank commit object name for boundary commits in
-       linkgit:git-blame[1]. This option defaults to false.
-
-blame.coloring::
-       This determines the coloring scheme to be applied to blame
-       output. It can be 'repeatedLines', 'highlightRecent',
-       or 'none' which is the default.
-
-blame.date::
-       Specifies the format used to output dates in linkgit:git-blame[1].
-       If unset the iso format is used. For supported values,
-       see the discussion of the `--date` option at linkgit:git-log[1].
-
-blame.showEmail::
-       Show the author email instead of author name in linkgit:git-blame[1].
-       This option defaults to false.
-
-blame.showRoot::
-       Do not treat root commits as boundaries in linkgit:git-blame[1].
-       This option defaults to false.
-
-branch.autoSetupMerge::
-       Tells 'git branch' and 'git checkout' to set up new branches
-       so that linkgit:git-pull[1] will appropriately merge from the
-       starting point branch. Note that even if this option is not set,
-       this behavior can be chosen per-branch using the `--track`
-       and `--no-track` options. The valid settings are: `false` -- no
-       automatic setup is done; `true` -- automatic setup is done when the
-       starting point is a remote-tracking branch; `always` --
-       automatic setup is done when the starting point is either a
-       local branch or remote-tracking
-       branch. This option defaults to true.
-
-branch.autoSetupRebase::
-       When a new branch is created with 'git branch' or 'git checkout'
-       that tracks another branch, this variable tells Git to set
-       up pull to rebase instead of merge (see "branch.<name>.rebase").
-       When `never`, rebase is never automatically set to true.
-       When `local`, rebase is set to true for tracked branches of
-       other local branches.
-       When `remote`, rebase is set to true for tracked branches of
-       remote-tracking branches.
-       When `always`, rebase will be set to true for all tracking
-       branches.
-       See "branch.autoSetupMerge" for details on how to set up a
-       branch to track another branch.
-       This option defaults to never.
-
-branch.sort::
-       This variable controls the sort ordering of branches when displayed by
-       linkgit:git-branch[1]. Without the "--sort=<value>" option provided, the
-       value of this variable will be used as the default.
-       See linkgit:git-for-each-ref[1] field names for valid values.
-
-branch.<name>.remote::
-       When on branch <name>, it tells 'git fetch' and 'git push'
-       which remote to fetch from/push to.  The remote to push to
-       may be overridden with `remote.pushDefault` (for all branches).
-       The remote to push to, for the current branch, may be further
-       overridden by `branch.<name>.pushRemote`.  If no remote is
-       configured, or if you are not on any branch, it defaults to
-       `origin` for fetching and `remote.pushDefault` for pushing.
-       Additionally, `.` (a period) is the current local repository
-       (a dot-repository), see `branch.<name>.merge`'s final note below.
-
-branch.<name>.pushRemote::
-       When on branch <name>, it overrides `branch.<name>.remote` for
-       pushing.  It also overrides `remote.pushDefault` for pushing
-       from branch <name>.  When you pull from one place (e.g. your
-       upstream) and push to another place (e.g. your own publishing
-       repository), you would want to set `remote.pushDefault` to
-       specify the remote to push to for all branches, and use this
-       option to override it for a specific branch.
-
-branch.<name>.merge::
-       Defines, together with branch.<name>.remote, the upstream branch
-       for the given branch. It tells 'git fetch'/'git pull'/'git rebase' which
-       branch to merge and can also affect 'git push' (see push.default).
-       When in branch <name>, it tells 'git fetch' the default
-       refspec to be marked for merging in FETCH_HEAD. The value is
-       handled like the remote part of a refspec, and must match a
-       ref which is fetched from the remote given by
-       "branch.<name>.remote".
-       The merge information is used by 'git pull' (which at first calls
-       'git fetch') to lookup the default branch for merging. Without
-       this option, 'git pull' defaults to merge the first refspec fetched.
-       Specify multiple values to get an octopus merge.
-       If you wish to setup 'git pull' so that it merges into <name> from
-       another branch in the local repository, you can point
-       branch.<name>.merge to the desired branch, and use the relative path
-       setting `.` (a period) for branch.<name>.remote.
-
-branch.<name>.mergeOptions::
-       Sets default options for merging into branch <name>. The syntax and
-       supported options are the same as those of linkgit:git-merge[1], but
-       option values containing whitespace characters are currently not
-       supported.
+include::config/alias.txt[]
 
-branch.<name>.rebase::
-       When true, rebase the branch <name> on top of the fetched branch,
-       instead of merging the default branch from the default remote when
-       "git pull" is run. See "pull.rebase" for doing this in a non
-       branch-specific manner.
-+
-When `merges`, pass the `--rebase-merges` option to 'git rebase'
-so that the local merge commits are included in the rebase (see
-linkgit:git-rebase[1] for details).
-+
-When preserve, also pass `--preserve-merges` along to 'git rebase'
-so that locally committed merge commits will not be flattened
-by running 'git pull'.
-+
-When the value is `interactive`, the rebase is run in interactive mode.
-+
-*NOTE*: this is a possibly dangerous operation; do *not* use
-it unless you understand the implications (see linkgit:git-rebase[1]
-for details).
-
-branch.<name>.description::
-       Branch description, can be edited with
-       `git branch --edit-description`. Branch description is
-       automatically added in the format-patch cover letter or
-       request-pull summary.
-
-browser.<tool>.cmd::
-       Specify the command to invoke the specified browser. The
-       specified command is evaluated in shell with the URLs passed
-       as arguments. (See linkgit:git-web{litdd}browse[1].)
-
-browser.<tool>.path::
-       Override the path for the given tool that may be used to
-       browse HTML help (see `-w` option in linkgit:git-help[1]) or a
-       working repository in gitweb (see linkgit:git-instaweb[1]).
-
-checkout.defaultRemote::
-       When you run 'git checkout <something>' and only have one
-       remote, it may implicitly fall back on checking out and
-       tracking e.g. 'origin/<something>'. This stops working as soon
-       as you have more than one remote with a '<something>'
-       reference. This setting allows for setting the name of a
-       preferred remote that should always win when it comes to
-       disambiguation. The typical use-case is to set this to
-       `origin`.
-+
-Currently this is used by linkgit:git-checkout[1] when 'git checkout
-<something>' will checkout the '<something>' branch on another remote,
-and by linkgit:git-worktree[1] when 'git worktree add' refers to a
-remote branch. This setting might be used for other checkout-like
-commands or functionality in the future.
-
-checkout.optimizeNewBranch::
-       Optimizes the performance of "git checkout -b <new_branch>" when
-       using sparse-checkout.  When set to true, git will not update the
-       repo based on the current sparse-checkout settings.  This means it
-       will not update the skip-worktree bit in the index nor add/remove
-       files in the working directory to reflect the current sparse checkout
-       settings nor will it show the local changes.
-
-clean.requireForce::
-       A boolean to make git-clean do nothing unless given -f,
-       -i or -n.   Defaults to true.
-
-color.advice::
-       A boolean to enable/disable color in hints (e.g. when a push
-       failed, see `advice.*` for a list).  May be set to `always`,
-       `false` (or `never`) or `auto` (or `true`), in which case colors
-       are used only when the error output goes to a terminal. If
-       unset, then the value of `color.ui` is used (`auto` by default).
-
-color.advice.hint::
-       Use customized color for hints.
-
-color.blame.highlightRecent::
-       This can be used to color the metadata of a blame line depending
-       on age of the line.
-+
-This setting should be set to a comma-separated list of color and date settings,
-starting and ending with a color, the dates should be set from oldest to newest.
-The metadata will be colored given the colors if the the line was introduced
-before the given timestamp, overwriting older timestamped colors.
-+
-Instead of an absolute timestamp relative timestamps work as well, e.g.
-2.weeks.ago is valid to address anything older than 2 weeks.
-+
-It defaults to 'blue,12 month ago,white,1 month ago,red', which colors
-everything older than one year blue, recent changes between one month and
-one year old are kept white, and lines introduced within the last month are
-colored red.
-
-color.blame.repeatedLines::
-       Use the customized color for the part of git-blame output that
-       is repeated meta information per line (such as commit id,
-       author name, date and timezone). Defaults to cyan.
-
-color.branch::
-       A boolean to enable/disable color in the output of
-       linkgit:git-branch[1]. May be set to `always`,
-       `false` (or `never`) or `auto` (or `true`), in which case colors are used
-       only when the output is to a terminal. If unset, then the
-       value of `color.ui` is used (`auto` by default).
-
-color.branch.<slot>::
-       Use customized color for branch coloration. `<slot>` is one of
-       `current` (the current branch), `local` (a local branch),
-       `remote` (a remote-tracking branch in refs/remotes/),
-       `upstream` (upstream tracking branch), `plain` (other
-       refs).
-
-color.diff::
-       Whether to use ANSI escape sequences to add color to patches.
-       If this is set to `always`, linkgit:git-diff[1],
-       linkgit:git-log[1], and linkgit:git-show[1] will use color
-       for all patches.  If it is set to `true` or `auto`, those
-       commands will only use color when output is to the terminal.
-       If unset, then the value of `color.ui` is used (`auto` by
-       default).
-+
-This does not affect linkgit:git-format-patch[1] or the
-'git-diff-{asterisk}' plumbing commands.  Can be overridden on the
-command line with the `--color[=<when>]` option.
-
-color.diff.<slot>::
-       Use customized color for diff colorization.  `<slot>` specifies
-       which part of the patch to use the specified color, and is one
-       of `context` (context text - `plain` is a historical synonym),
-       `meta` (metainformation), `frag`
-       (hunk header), 'func' (function in hunk header), `old` (removed lines),
-       `new` (added lines), `commit` (commit headers), `whitespace`
-       (highlighting whitespace errors), `oldMoved` (deleted lines),
-       `newMoved` (added lines), `oldMovedDimmed`, `oldMovedAlternative`,
-       `oldMovedAlternativeDimmed`, `newMovedDimmed`, `newMovedAlternative`
-       `newMovedAlternativeDimmed` (See the '<mode>'
-       setting of '--color-moved' in linkgit:git-diff[1] for details),
-       `contextDimmed`, `oldDimmed`, `newDimmed`, `contextBold`,
-       `oldBold`, and `newBold` (see linkgit:git-range-diff[1] for details).
-
-color.decorate.<slot>::
-       Use customized color for 'git log --decorate' output.  `<slot>` is one
-       of `branch`, `remoteBranch`, `tag`, `stash` or `HEAD` for local
-       branches, remote-tracking branches, tags, stash and HEAD, respectively
-       and `grafted` for grafted commits.
-
-color.grep::
-       When set to `always`, always highlight matches.  When `false` (or
-       `never`), never.  When set to `true` or `auto`, use color only
-       when the output is written to the terminal.  If unset, then the
-       value of `color.ui` is used (`auto` by default).
-
-color.grep.<slot>::
-       Use customized color for grep colorization.  `<slot>` specifies which
-       part of the line to use the specified color, and is one of
-+
---
-`context`;;
-       non-matching text in context lines (when using `-A`, `-B`, or `-C`)
-`filename`;;
-       filename prefix (when not using `-h`)
-`function`;;
-       function name lines (when using `-p`)
-`lineNumber`;;
-       line number prefix (when using `-n`)
-`column`;;
-       column number prefix (when using `--column`)
-`match`;;
-       matching text (same as setting `matchContext` and `matchSelected`)
-`matchContext`;;
-       matching text in context lines
-`matchSelected`;;
-       matching text in selected lines
-`selected`;;
-       non-matching text in selected lines
-`separator`;;
-       separators between fields on a line (`:`, `-`, and `=`)
-       and between hunks (`--`)
---
+include::config/am.txt[]
 
-color.interactive::
-       When set to `always`, always use colors for interactive prompts
-       and displays (such as those used by "git-add --interactive" and
-       "git-clean --interactive"). When false (or `never`), never.
-       When set to `true` or `auto`, use colors only when the output is
-       to the terminal. If unset, then the value of `color.ui` is
-       used (`auto` by default).
-
-color.interactive.<slot>::
-       Use customized color for 'git add --interactive' and 'git clean
-       --interactive' output. `<slot>` may be `prompt`, `header`, `help`
-       or `error`, for four distinct types of normal output from
-       interactive commands.
-
-color.pager::
-       A boolean to enable/disable colored output when the pager is in
-       use (default is true).
-
-color.push::
-       A boolean to enable/disable color in push errors. May be set to
-       `always`, `false` (or `never`) or `auto` (or `true`), in which
-       case colors are used only when the error output goes to a terminal.
-       If unset, then the value of `color.ui` is used (`auto` by default).
-
-color.push.error::
-       Use customized color for push errors.
-
-color.remote::
-       If set, keywords at the start of the line are highlighted. The
-       keywords are "error", "warning", "hint" and "success", and are
-       matched case-insensitively. May be set to `always`, `false` (or
-       `never`) or `auto` (or `true`). If unset, then the value of
-       `color.ui` is used (`auto` by default).
-
-color.remote.<slot>::
-       Use customized color for each remote keyword. `<slot>` may be
-       `hint`, `warning`, `success` or `error` which match the
-       corresponding keyword.
-
-color.showBranch::
-       A boolean to enable/disable color in the output of
-       linkgit:git-show-branch[1]. May be set to `always`,
-       `false` (or `never`) or `auto` (or `true`), in which case colors are used
-       only when the output is to a terminal. If unset, then the
-       value of `color.ui` is used (`auto` by default).
-
-color.status::
-       A boolean to enable/disable color in the output of
-       linkgit:git-status[1]. May be set to `always`,
-       `false` (or `never`) or `auto` (or `true`), in which case colors are used
-       only when the output is to a terminal. If unset, then the
-       value of `color.ui` is used (`auto` by default).
-
-color.status.<slot>::
-       Use customized color for status colorization. `<slot>` is
-       one of `header` (the header text of the status message),
-       `added` or `updated` (files which are added but not committed),
-       `changed` (files which are changed but not added in the index),
-       `untracked` (files which are not tracked by Git),
-       `branch` (the current branch),
-       `nobranch` (the color the 'no branch' warning is shown in, defaulting
-       to red),
-       `localBranch` or `remoteBranch` (the local and remote branch names,
-       respectively, when branch and tracking information is displayed in the
-       status short-format), or
-       `unmerged` (files which have unmerged changes).
-
-color.transport::
-       A boolean to enable/disable color when pushes are rejected. May be
-       set to `always`, `false` (or `never`) or `auto` (or `true`), in which
-       case colors are used only when the error output goes to a terminal.
-       If unset, then the value of `color.ui` is used (`auto` by default).
-
-color.transport.rejected::
-       Use customized color when a push was rejected.
-
-color.ui::
-       This variable determines the default value for variables such
-       as `color.diff` and `color.grep` that control the use of color
-       per command family. Its scope will expand as more commands learn
-       configuration to set a default for the `--color` option.  Set it
-       to `false` or `never` if you prefer Git commands not to use
-       color unless enabled explicitly with some other configuration
-       or the `--color` option. Set it to `always` if you want all
-       output not intended for machine consumption to use color, to
-       `true` or `auto` (this is the default since Git 1.8.4) if you
-       want such output to use color when written to the terminal.
-
-column.ui::
-       Specify whether supported commands should output in columns.
-       This variable consists of a list of tokens separated by spaces
-       or commas:
-+
-These options control when the feature should be enabled
-(defaults to 'never'):
-+
---
-`always`;;
-       always show in columns
-`never`;;
-       never show in columns
-`auto`;;
-       show in columns if the output is to the terminal
---
-+
-These options control layout (defaults to 'column').  Setting any
-of these implies 'always' if none of 'always', 'never', or 'auto' are
-specified.
-+
---
-`column`;;
-       fill columns before rows
-`row`;;
-       fill rows before columns
-`plain`;;
-       show in one column
---
-+
-Finally, these options can be combined with a layout option (defaults
-to 'nodense'):
-+
---
-`dense`;;
-       make unequal size columns to utilize more space
-`nodense`;;
-       make equal size columns
---
+include::config/apply.txt[]
 
-column.branch::
-       Specify whether to output branch listing in `git branch` in columns.
-       See `column.ui` for details.
-
-column.clean::
-       Specify the layout when list items in `git clean -i`, which always
-       shows files and directories in columns. See `column.ui` for details.
-
-column.status::
-       Specify whether to output untracked files in `git status` in columns.
-       See `column.ui` for details.
-
-column.tag::
-       Specify whether to output tag listing in `git tag` in columns.
-       See `column.ui` for details.
-
-commit.cleanup::
-       This setting overrides the default of the `--cleanup` option in
-       `git commit`. See linkgit:git-commit[1] for details. Changing the
-       default can be useful when you always want to keep lines that begin
-       with comment character `#` in your log message, in which case you
-       would do `git config commit.cleanup whitespace` (note that you will
-       have to remove the help lines that begin with `#` in the commit log
-       template yourself, if you do this).
-
-commit.gpgSign::
-
-       A boolean to specify whether all commits should be GPG signed.
-       Use of this option when doing operations such as rebase can
-       result in a large number of commits being signed. It may be
-       convenient to use an agent to avoid typing your GPG passphrase
-       several times.
-
-commit.status::
-       A boolean to enable/disable inclusion of status information in the
-       commit message template when using an editor to prepare the commit
-       message.  Defaults to true.
-
-commit.template::
-       Specify the pathname of a file to use as the template for
-       new commit messages.
-
-commit.verbose::
-       A boolean or int to specify the level of verbose with `git commit`.
-       See linkgit:git-commit[1].
-
-credential.helper::
-       Specify an external helper to be called when a username or
-       password credential is needed; the helper may consult external
-       storage to avoid prompting the user for the credentials. Note
-       that multiple helpers may be defined. See linkgit:gitcredentials[7]
-       for details.
+include::config/blame.txt[]
 
-credential.useHttpPath::
-       When acquiring credentials, consider the "path" component of an http
-       or https URL to be important. Defaults to false. See
-       linkgit:gitcredentials[7] for more information.
-
-credential.username::
-       If no username is set for a network authentication, use this username
-       by default. See credential.<context>.* below, and
-       linkgit:gitcredentials[7].
-
-credential.<url>.*::
-       Any of the credential.* options above can be applied selectively to
-       some credentials. For example "credential.https://example.com.username"
-       would set the default username only for https connections to
-       example.com. See linkgit:gitcredentials[7] for details on how URLs are
-       matched.
-
-credentialCache.ignoreSIGHUP::
-       Tell git-credential-cache--daemon to ignore SIGHUP, instead of quitting.
-
-completion.commands::
-       This is only used by git-completion.bash to add or remove
-       commands from the list of completed commands. Normally only
-       porcelain commands and a few select others are completed. You
-       can add more commands, separated by space, in this
-       variable. Prefixing the command with '-' will remove it from
-       the existing list.
-
-include::diff-config.txt[]
-
-difftool.<tool>.path::
-       Override the path for the given tool.  This is useful in case
-       your tool is not in the PATH.
+include::config/branch.txt[]
 
-difftool.<tool>.cmd::
-       Specify the command to invoke the specified diff tool.
-       The specified command is evaluated in shell with the following
-       variables available:  'LOCAL' is set to the name of the temporary
-       file containing the contents of the diff pre-image and 'REMOTE'
-       is set to the name of the temporary file containing the contents
-       of the diff post-image.
-
-difftool.prompt::
-       Prompt before each invocation of the diff tool.
-
-fastimport.unpackLimit::
-       If the number of objects imported by linkgit:git-fast-import[1]
-       is below this limit, then the objects will be unpacked into
-       loose object files.  However if the number of imported objects
-       equals or exceeds this limit then the pack will be stored as a
-       pack.  Storing the pack from a fast-import can make the import
-       operation complete faster, especially on slow filesystems.  If
-       not set, the value of `transfer.unpackLimit` is used instead.
-
-include::fetch-config.txt[]
-
-include::format-config.txt[]
-
-filter.<driver>.clean::
-       The command which is used to convert the content of a worktree
-       file to a blob upon checkin.  See linkgit:gitattributes[5] for
-       details.
-
-filter.<driver>.smudge::
-       The command which is used to convert the content of a blob
-       object to a worktree file upon checkout.  See
-       linkgit:gitattributes[5] for details.
-
-fsck.<msg-id>::
-       During fsck git may find issues with legacy data which
-       wouldn't be generated by current versions of git, and which
-       wouldn't be sent over the wire if `transfer.fsckObjects` was
-       set. This feature is intended to support working with legacy
-       repositories containing such data.
-+
-Setting `fsck.<msg-id>` will be picked up by linkgit:git-fsck[1], but
-to accept pushes of such data set `receive.fsck.<msg-id>` instead, or
-to clone or fetch it set `fetch.fsck.<msg-id>`.
-+
-The rest of the documentation discusses `fsck.*` for brevity, but the
-same applies for the corresponding `receive.fsck.*` and
-`fetch.<msg-id>.*`. variables.
-+
-Unlike variables like `color.ui` and `core.editor` the
-`receive.fsck.<msg-id>` and `fetch.fsck.<msg-id>` variables will not
-fall back on the `fsck.<msg-id>` configuration if they aren't set. To
-uniformly configure the same fsck settings in different circumstances
-all three of them they must all set to the same values.
-+
-When `fsck.<msg-id>` is set, errors can be switched to warnings and
-vice versa by configuring the `fsck.<msg-id>` setting where the
-`<msg-id>` is the fsck message ID and the value is one of `error`,
-`warn` or `ignore`. For convenience, fsck prefixes the error/warning
-with the message ID, e.g. "missingEmail: invalid author/committer line
-- missing email" means that setting `fsck.missingEmail = ignore` will
-hide that issue.
-+
-In general, it is better to enumerate existing objects with problems
-with `fsck.skipList`, instead of listing the kind of breakages these
-problematic objects share to be ignored, as doing the latter will
-allow new instances of the same breakages go unnoticed.
-+
-Setting an unknown `fsck.<msg-id>` value will cause fsck to die, but
-doing the same for `receive.fsck.<msg-id>` and `fetch.fsck.<msg-id>`
-will only cause git to warn.
-
-fsck.skipList::
-       The path to a list of object names (i.e. one unabbreviated SHA-1 per
-       line) that are known to be broken in a non-fatal way and should
-       be ignored. On versions of Git 2.20 and later comments ('#'), empty
-       lines, and any leading and trailing whitespace is ignored. Everything
-       but a SHA-1 per line will error out on older versions.
-+
-This feature is useful when an established project should be accepted
-despite early commits containing errors that can be safely ignored
-such as invalid committer email addresses.  Note: corrupt objects
-cannot be skipped with this setting.
-+
-Like `fsck.<msg-id>` this variable has corresponding
-`receive.fsck.skipList` and `fetch.fsck.skipList` variants.
-+
-Unlike variables like `color.ui` and `core.editor` the
-`receive.fsck.skipList` and `fetch.fsck.skipList` variables will not
-fall back on the `fsck.skipList` configuration if they aren't set. To
-uniformly configure the same fsck settings in different circumstances
-all three of them they must all set to the same values.
-+
-Older versions of Git (before 2.20) documented that the object names
-list should be sorted. This was never a requirement, the object names
-could appear in any order, but when reading the list we tracked whether
-the list was sorted for the purposes of an internal binary search
-implementation, which could save itself some work with an already sorted
-list. Unless you had a humongous list there was no reason to go out of
-your way to pre-sort the list. After Git version 2.20 a hash implementation
-is used instead, so there's now no reason to pre-sort the list.
-
-gc.aggressiveDepth::
-       The depth parameter used in the delta compression
-       algorithm used by 'git gc --aggressive'.  This defaults
-       to 50.
-
-gc.aggressiveWindow::
-       The window size parameter used in the delta compression
-       algorithm used by 'git gc --aggressive'.  This defaults
-       to 250.
-
-gc.auto::
-       When there are approximately more than this many loose
-       objects in the repository, `git gc --auto` will pack them.
-       Some Porcelain commands use this command to perform a
-       light-weight garbage collection from time to time.  The
-       default value is 6700.  Setting this to 0 disables it.
-
-gc.autoPackLimit::
-       When there are more than this many packs that are not
-       marked with `*.keep` file in the repository, `git gc
-       --auto` consolidates them into one larger pack.  The
-       default value is 50.  Setting this to 0 disables it.
-
-gc.autoDetach::
-       Make `git gc --auto` return immediately and run in background
-       if the system supports it. Default is true.
-
-gc.bigPackThreshold::
-       If non-zero, all packs larger than this limit are kept when
-       `git gc` is run. This is very similar to `--keep-base-pack`
-       except that all packs that meet the threshold are kept, not
-       just the base pack. Defaults to zero. Common unit suffixes of
-       'k', 'm', or 'g' are supported.
-+
-Note that if the number of kept packs is more than gc.autoPackLimit,
-this configuration variable is ignored, all packs except the base pack
-will be repacked. After this the number of packs should go below
-gc.autoPackLimit and gc.bigPackThreshold should be respected again.
-
-gc.writeCommitGraph::
-       If true, then gc will rewrite the commit-graph file when
-       linkgit:git-gc[1] is run. When using linkgit:git-gc[1]
-       '--auto' the commit-graph will be updated if housekeeping is
-       required. Default is false. See linkgit:git-commit-graph[1]
-       for details.
+include::config/browser.txt[]
 
-gc.logExpiry::
-       If the file gc.log exists, then `git gc --auto` will print
-       its content and exit with status zero instead of running
-       unless that file is more than 'gc.logExpiry' old.  Default is
-       "1.day".  See `gc.pruneExpire` for more ways to specify its
-       value.
-
-gc.packRefs::
-       Running `git pack-refs` in a repository renders it
-       unclonable by Git versions prior to 1.5.1.2 over dumb
-       transports such as HTTP.  This variable determines whether
-       'git gc' runs `git pack-refs`. This can be set to `notbare`
-       to enable it within all non-bare repos or it can be set to a
-       boolean value.  The default is `true`.
-
-gc.pruneExpire::
-       When 'git gc' is run, it will call 'prune --expire 2.weeks.ago'.
-       Override the grace period with this config variable.  The value
-       "now" may be used to disable this grace period and always prune
-       unreachable objects immediately, or "never" may be used to
-       suppress pruning.  This feature helps prevent corruption when
-       'git gc' runs concurrently with another process writing to the
-       repository; see the "NOTES" section of linkgit:git-gc[1].
-
-gc.worktreePruneExpire::
-       When 'git gc' is run, it calls
-       'git worktree prune --expire 3.months.ago'.
-       This config variable can be used to set a different grace
-       period. The value "now" may be used to disable the grace
-       period and prune `$GIT_DIR/worktrees` immediately, or "never"
-       may be used to suppress pruning.
-
-gc.reflogExpire::
-gc.<pattern>.reflogExpire::
-       'git reflog expire' removes reflog entries older than
-       this time; defaults to 90 days. The value "now" expires all
-       entries immediately, and "never" suppresses expiration
-       altogether. With "<pattern>" (e.g.
-       "refs/stash") in the middle the setting applies only to
-       the refs that match the <pattern>.
-
-gc.reflogExpireUnreachable::
-gc.<pattern>.reflogExpireUnreachable::
-       'git reflog expire' removes reflog entries older than
-       this time and are not reachable from the current tip;
-       defaults to 30 days. The value "now" expires all entries
-       immediately, and "never" suppresses expiration altogether.
-       With "<pattern>" (e.g. "refs/stash")
-       in the middle, the setting applies only to the refs that
-       match the <pattern>.
-
-gc.rerereResolved::
-       Records of conflicted merge you resolved earlier are
-       kept for this many days when 'git rerere gc' is run.
-       You can also use more human-readable "1.month.ago", etc.
-       The default is 60 days.  See linkgit:git-rerere[1].
-
-gc.rerereUnresolved::
-       Records of conflicted merge you have not resolved are
-       kept for this many days when 'git rerere gc' is run.
-       You can also use more human-readable "1.month.ago", etc.
-       The default is 15 days.  See linkgit:git-rerere[1].
-
-include::gitcvs-config.txt[]
-
-gitweb.category::
-gitweb.description::
-gitweb.owner::
-gitweb.url::
-       See linkgit:gitweb[1] for description.
-
-gitweb.avatar::
-gitweb.blame::
-gitweb.grep::
-gitweb.highlight::
-gitweb.patches::
-gitweb.pickaxe::
-gitweb.remote_heads::
-gitweb.showSizes::
-gitweb.snapshot::
-       See linkgit:gitweb.conf[5] for description.
-
-grep.lineNumber::
-       If set to true, enable `-n` option by default.
-
-grep.column::
-       If set to true, enable the `--column` option by default.
-
-grep.patternType::
-       Set the default matching behavior. Using a value of 'basic', 'extended',
-       'fixed', or 'perl' will enable the `--basic-regexp`, `--extended-regexp`,
-       `--fixed-strings`, or `--perl-regexp` option accordingly, while the
-       value 'default' will return to the default matching behavior.
-
-grep.extendedRegexp::
-       If set to true, enable `--extended-regexp` option by default. This
-       option is ignored when the `grep.patternType` option is set to a value
-       other than 'default'.
-
-grep.threads::
-       Number of grep worker threads to use.
-       See `grep.threads` in linkgit:git-grep[1] for more information.
-
-grep.fallbackToNoIndex::
-       If set to true, fall back to git grep --no-index if git grep
-       is executed outside of a git repository.  Defaults to false.
-
-gpg.program::
-       Use this custom program instead of "`gpg`" found on `$PATH` when
-       making or verifying a PGP signature. The program must support the
-       same command-line interface as GPG, namely, to verify a detached
-       signature, "`gpg --verify $file - <$signature`" is run, and the
-       program is expected to signal a good signature by exiting with
-       code 0, and to generate an ASCII-armored detached signature, the
-       standard input of "`gpg -bsau $key`" is fed with the contents to be
-       signed, and the program is expected to send the result to its
-       standard output.
-
-gpg.format::
-       Specifies which key format to use when signing with `--gpg-sign`.
-       Default is "openpgp" and another possible value is "x509".
-
-gpg.<format>.program::
-       Use this to customize the program used for the signing format you
-       chose. (see `gpg.program` and `gpg.format`) `gpg.program` can still
-       be used as a legacy synonym for `gpg.openpgp.program`. The default
-       value for `gpg.x509.program` is "gpgsm".
-
-include::gui-config.txt[]
-
-guitool.<name>.cmd::
-       Specifies the shell command line to execute when the corresponding item
-       of the linkgit:git-gui[1] `Tools` menu is invoked. This option is
-       mandatory for every tool. The command is executed from the root of
-       the working directory, and in the environment it receives the name of
-       the tool as `GIT_GUITOOL`, the name of the currently selected file as
-       'FILENAME', and the name of the current branch as 'CUR_BRANCH' (if
-       the head is detached, 'CUR_BRANCH' is empty).
-
-guitool.<name>.needsFile::
-       Run the tool only if a diff is selected in the GUI. It guarantees
-       that 'FILENAME' is not empty.
-
-guitool.<name>.noConsole::
-       Run the command silently, without creating a window to display its
-       output.
-
-guitool.<name>.noRescan::
-       Don't rescan the working directory for changes after the tool
-       finishes execution.
-
-guitool.<name>.confirm::
-       Show a confirmation dialog before actually running the tool.
-
-guitool.<name>.argPrompt::
-       Request a string argument from the user, and pass it to the tool
-       through the `ARGS` environment variable. Since requesting an
-       argument implies confirmation, the 'confirm' option has no effect
-       if this is enabled. If the option is set to 'true', 'yes', or '1',
-       the dialog uses a built-in generic prompt; otherwise the exact
-       value of the variable is used.
-
-guitool.<name>.revPrompt::
-       Request a single valid revision from the user, and set the
-       `REVISION` environment variable. In other aspects this option
-       is similar to 'argPrompt', and can be used together with it.
-
-guitool.<name>.revUnmerged::
-       Show only unmerged branches in the 'revPrompt' subdialog.
-       This is useful for tools similar to merge or rebase, but not
-       for things like checkout or reset.
-
-guitool.<name>.title::
-       Specifies the title to use for the prompt dialog. The default
-       is the tool name.
-
-guitool.<name>.prompt::
-       Specifies the general prompt string to display at the top of
-       the dialog, before subsections for 'argPrompt' and 'revPrompt'.
-       The default value includes the actual command.
-
-help.browser::
-       Specify the browser that will be used to display help in the
-       'web' format. See linkgit:git-help[1].
-
-help.format::
-       Override the default help format used by linkgit:git-help[1].
-       Values 'man', 'info', 'web' and 'html' are supported. 'man' is
-       the default. 'web' and 'html' are the same.
-
-help.autoCorrect::
-       Automatically correct and execute mistyped commands after
-       waiting for the given number of deciseconds (0.1 sec). If more
-       than one command can be deduced from the entered text, nothing
-       will be executed.  If the value of this option is negative,
-       the corrected command will be executed immediately. If the
-       value is 0 - the command will be just shown but not executed.
-       This is the default.
-
-help.htmlPath::
-       Specify the path where the HTML documentation resides. File system paths
-       and URLs are supported. HTML pages will be prefixed with this path when
-       help is displayed in the 'web' format. This defaults to the documentation
-       path of your Git installation.
-
-http.proxy::
-       Override the HTTP proxy, normally configured using the 'http_proxy',
-       'https_proxy', and 'all_proxy' environment variables (see `curl(1)`). In
-       addition to the syntax understood by curl, it is possible to specify a
-       proxy string with a user name but no password, in which case git will
-       attempt to acquire one in the same way it does for other credentials. See
-       linkgit:gitcredentials[7] for more information. The syntax thus is
-       '[protocol://][user[:password]@]proxyhost[:port]'. This can be overridden
-       on a per-remote basis; see remote.<name>.proxy
-
-http.proxyAuthMethod::
-       Set the method with which to authenticate against the HTTP proxy. This
-       only takes effect if the configured proxy string contains a user name part
-       (i.e. is of the form 'user@host' or 'user@host:port'). This can be
-       overridden on a per-remote basis; see `remote.<name>.proxyAuthMethod`.
-       Both can be overridden by the `GIT_HTTP_PROXY_AUTHMETHOD` environment
-       variable.  Possible values are:
-+
---
-* `anyauth` - Automatically pick a suitable authentication method. It is
-  assumed that the proxy answers an unauthenticated request with a 407
-  status code and one or more Proxy-authenticate headers with supported
-  authentication methods. This is the default.
-* `basic` - HTTP Basic authentication
-* `digest` - HTTP Digest authentication; this prevents the password from being
-  transmitted to the proxy in clear text
-* `negotiate` - GSS-Negotiate authentication (compare the --negotiate option
-  of `curl(1)`)
-* `ntlm` - NTLM authentication (compare the --ntlm option of `curl(1)`)
---
+include::config/checkout.txt[]
 
-http.emptyAuth::
-       Attempt authentication without seeking a username or password.  This
-       can be used to attempt GSS-Negotiate authentication without specifying
-       a username in the URL, as libcurl normally requires a username for
-       authentication.
-
-http.delegation::
-       Control GSSAPI credential delegation. The delegation is disabled
-       by default in libcurl since version 7.21.7. Set parameter to tell
-       the server what it is allowed to delegate when it comes to user
-       credentials. Used with GSS/kerberos. Possible values are:
-+
---
-* `none` - Don't allow any delegation.
-* `policy` - Delegates if and only if the OK-AS-DELEGATE flag is set in the
-  Kerberos service ticket, which is a matter of realm policy.
-* `always` - Unconditionally allow the server to delegate.
---
+include::config/clean.txt[]
 
+include::config/color.txt[]
 
-http.extraHeader::
-       Pass an additional HTTP header when communicating with a server.  If
-       more than one such entry exists, all of them are added as extra
-       headers.  To allow overriding the settings inherited from the system
-       config, an empty value will reset the extra headers to the empty list.
-
-http.cookieFile::
-       The pathname of a file containing previously stored cookie lines,
-       which should be used
-       in the Git http session, if they match the server. The file format
-       of the file to read cookies from should be plain HTTP headers or
-       the Netscape/Mozilla cookie file format (see `curl(1)`).
-       NOTE that the file specified with http.cookieFile is used only as
-       input unless http.saveCookies is set.
-
-http.saveCookies::
-       If set, store cookies received during requests to the file specified by
-       http.cookieFile. Has no effect if http.cookieFile is unset.
-
-http.sslVersion::
-       The SSL version to use when negotiating an SSL connection, if you
-       want to force the default.  The available and default version
-       depend on whether libcurl was built against NSS or OpenSSL and the
-       particular configuration of the crypto library in use. Internally
-       this sets the 'CURLOPT_SSL_VERSION' option; see the libcurl
-       documentation for more details on the format of this option and
-       for the ssl version supported. Actually the possible values of
-       this option are:
-
-       - sslv2
-       - sslv3
-       - tlsv1
-       - tlsv1.0
-       - tlsv1.1
-       - tlsv1.2
-       - tlsv1.3
+include::config/column.txt[]
 
-+
-Can be overridden by the `GIT_SSL_VERSION` environment variable.
-To force git to use libcurl's default ssl version and ignore any
-explicit http.sslversion option, set `GIT_SSL_VERSION` to the
-empty string.
-
-http.sslCipherList::
-  A list of SSL ciphers to use when negotiating an SSL connection.
-  The available ciphers depend on whether libcurl was built against
-  NSS or OpenSSL and the particular configuration of the crypto
-  library in use.  Internally this sets the 'CURLOPT_SSL_CIPHER_LIST'
-  option; see the libcurl documentation for more details on the format
-  of this list.
-+
-Can be overridden by the `GIT_SSL_CIPHER_LIST` environment variable.
-To force git to use libcurl's default cipher list and ignore any
-explicit http.sslCipherList option, set `GIT_SSL_CIPHER_LIST` to the
-empty string.
-
-http.sslVerify::
-       Whether to verify the SSL certificate when fetching or pushing
-       over HTTPS. Defaults to true. Can be overridden by the
-       `GIT_SSL_NO_VERIFY` environment variable.
-
-http.sslCert::
-       File containing the SSL certificate when fetching or pushing
-       over HTTPS. Can be overridden by the `GIT_SSL_CERT` environment
-       variable.
-
-http.sslKey::
-       File containing the SSL private key when fetching or pushing
-       over HTTPS. Can be overridden by the `GIT_SSL_KEY` environment
-       variable.
-
-http.sslCertPasswordProtected::
-       Enable Git's password prompt for the SSL certificate.  Otherwise
-       OpenSSL will prompt the user, possibly many times, if the
-       certificate or private key is encrypted.  Can be overridden by the
-       `GIT_SSL_CERT_PASSWORD_PROTECTED` environment variable.
-
-http.sslCAInfo::
-       File containing the certificates to verify the peer with when
-       fetching or pushing over HTTPS. Can be overridden by the
-       `GIT_SSL_CAINFO` environment variable.
-
-http.sslCAPath::
-       Path containing files with the CA certificates to verify the peer
-       with when fetching or pushing over HTTPS. Can be overridden
-       by the `GIT_SSL_CAPATH` environment variable.
-
-http.sslBackend::
-       Name of the SSL backend to use (e.g. "openssl" or "schannel").
-       This option is ignored if cURL lacks support for choosing the SSL
-       backend at runtime.
-
-http.schannelCheckRevoke::
-       Used to enforce or disable certificate revocation checks in cURL
-       when http.sslBackend is set to "schannel". Defaults to `true` if
-       unset. Only necessary to disable this if Git consistently errors
-       and the message is about checking the revocation status of a
-       certificate. This option is ignored if cURL lacks support for
-       setting the relevant SSL option at runtime.
-
-http.schannelUseSSLCAInfo::
-       As of cURL v7.60.0, the Secure Channel backend can use the
-       certificate bundle provided via `http.sslCAInfo`, but that would
-       override the Windows Certificate Store. Since this is not desirable
-       by default, Git will tell cURL not to use that bundle by default
-       when the `schannel` backend was configured via `http.sslBackend`,
-       unless `http.schannelUseSSLCAInfo` overrides this behavior.
-
-http.pinnedpubkey::
-       Public key of the https service. It may either be the filename of
-       a PEM or DER encoded public key file or a string starting with
-       'sha256//' followed by the base64 encoded sha256 hash of the
-       public key. See also libcurl 'CURLOPT_PINNEDPUBLICKEY'. git will
-       exit with an error if this option is set but not supported by
-       cURL.
-
-http.sslTry::
-       Attempt to use AUTH SSL/TLS and encrypted data transfers
-       when connecting via regular FTP protocol. This might be needed
-       if the FTP server requires it for security reasons or you wish
-       to connect securely whenever remote FTP server supports it.
-       Default is false since it might trigger certificate verification
-       errors on misconfigured servers.
-
-http.maxRequests::
-       How many HTTP requests to launch in parallel. Can be overridden
-       by the `GIT_HTTP_MAX_REQUESTS` environment variable. Default is 5.
-
-http.minSessions::
-       The number of curl sessions (counted across slots) to be kept across
-       requests. They will not be ended with curl_easy_cleanup() until
-       http_cleanup() is invoked. If USE_CURL_MULTI is not defined, this
-       value will be capped at 1. Defaults to 1.
-
-http.postBuffer::
-       Maximum size in bytes of the buffer used by smart HTTP
-       transports when POSTing data to the remote system.
-       For requests larger than this buffer size, HTTP/1.1 and
-       Transfer-Encoding: chunked is used to avoid creating a
-       massive pack file locally.  Default is 1 MiB, which is
-       sufficient for most requests.
-
-http.lowSpeedLimit, http.lowSpeedTime::
-       If the HTTP transfer speed is less than 'http.lowSpeedLimit'
-       for longer than 'http.lowSpeedTime' seconds, the transfer is aborted.
-       Can be overridden by the `GIT_HTTP_LOW_SPEED_LIMIT` and
-       `GIT_HTTP_LOW_SPEED_TIME` environment variables.
-
-http.noEPSV::
-       A boolean which disables using of EPSV ftp command by curl.
-       This can helpful with some "poor" ftp servers which don't
-       support EPSV mode. Can be overridden by the `GIT_CURL_FTP_NO_EPSV`
-       environment variable. Default is false (curl will use EPSV).
-
-http.userAgent::
-       The HTTP USER_AGENT string presented to an HTTP server.  The default
-       value represents the version of the client Git such as git/1.7.1.
-       This option allows you to override this value to a more common value
-       such as Mozilla/4.0.  This may be necessary, for instance, if
-       connecting through a firewall that restricts HTTP connections to a set
-       of common USER_AGENT strings (but not including those like git/1.7.1).
-       Can be overridden by the `GIT_HTTP_USER_AGENT` environment variable.
-
-http.followRedirects::
-       Whether git should follow HTTP redirects. If set to `true`, git
-       will transparently follow any redirect issued by a server it
-       encounters. If set to `false`, git will treat all redirects as
-       errors. If set to `initial`, git will follow redirects only for
-       the initial request to a remote, but not for subsequent
-       follow-up HTTP requests. Since git uses the redirected URL as
-       the base for the follow-up requests, this is generally
-       sufficient. The default is `initial`.
-
-http.<url>.*::
-       Any of the http.* options above can be applied selectively to some URLs.
-       For a config key to match a URL, each element of the config key is
-       compared to that of the URL, in the following order:
-+
---
-. Scheme (e.g., `https` in `https://example.com/`). This field
-  must match exactly between the config key and the URL.
-
-. Host/domain name (e.g., `example.com` in `https://example.com/`).
-  This field must match between the config key and the URL. It is
-  possible to specify a `*` as part of the host name to match all subdomains
-  at this level. `https://*.example.com/` for example would match
-  `https://foo.example.com/`, but not `https://foo.bar.example.com/`.
-
-. Port number (e.g., `8080` in `http://example.com:8080/`).
-  This field must match exactly between the config key and the URL.
-  Omitted port numbers are automatically converted to the correct
-  default for the scheme before matching.
-
-. Path (e.g., `repo.git` in `https://example.com/repo.git`). The
-  path field of the config key must match the path field of the URL
-  either exactly or as a prefix of slash-delimited path elements.  This means
-  a config key with path `foo/` matches URL path `foo/bar`.  A prefix can only
-  match on a slash (`/`) boundary.  Longer matches take precedence (so a config
-  key with path `foo/bar` is a better match to URL path `foo/bar` than a config
-  key with just path `foo/`).
-
-. User name (e.g., `user` in `https://user@example.com/repo.git`). If
-  the config key has a user name it must match the user name in the
-  URL exactly. If the config key does not have a user name, that
-  config key will match a URL with any user name (including none),
-  but at a lower precedence than a config key with a user name.
---
-+
-The list above is ordered by decreasing precedence; a URL that matches
-a config key's path is preferred to one that matches its user name. For example,
-if the URL is `https://user@example.com/foo/bar` a config key match of
-`https://example.com/foo` will be preferred over a config key match of
-`https://user@example.com`.
-+
-All URLs are normalized before attempting any matching (the password part,
-if embedded in the URL, is always ignored for matching purposes) so that
-equivalent URLs that are simply spelled differently will match properly.
-Environment variable settings always override any matches.  The URLs that are
-matched against are those given directly to Git commands.  This means any URLs
-visited as a result of a redirection do not participate in matching.
-
-ssh.variant::
-       By default, Git determines the command line arguments to use
-       based on the basename of the configured SSH command (configured
-       using the environment variable `GIT_SSH` or `GIT_SSH_COMMAND` or
-       the config setting `core.sshCommand`). If the basename is
-       unrecognized, Git will attempt to detect support of OpenSSH
-       options by first invoking the configured SSH command with the
-       `-G` (print configuration) option and will subsequently use
-       OpenSSH options (if that is successful) or no options besides
-       the host and remote command (if it fails).
-+
-The config variable `ssh.variant` can be set to override this detection.
-Valid values are `ssh` (to use OpenSSH options), `plink`, `putty`,
-`tortoiseplink`, `simple` (no options except the host and remote command).
-The default auto-detection can be explicitly requested using the value
-`auto`.  Any other value is treated as `ssh`.  This setting can also be
-overridden via the environment variable `GIT_SSH_VARIANT`.
-+
-The current command-line parameters used for each variant are as
-follows:
-+
---
+include::config/commit.txt[]
 
-* `ssh` - [-p port] [-4] [-6] [-o option] [username@]host command
+include::config/credential.txt[]
 
-* `simple` - [username@]host command
+include::config/completion.txt[]
 
-* `plink` or `putty` - [-P port] [-4] [-6] [username@]host command
+include::config/diff.txt[]
 
-* `tortoiseplink` - [-P port] [-4] [-6] -batch [username@]host command
+include::config/difftool.txt[]
 
---
-+
-Except for the `simple` variant, command-line parameters are likely to
-change as git gains new features.
-
-i18n.commitEncoding::
-       Character encoding the commit messages are stored in; Git itself
-       does not care per se, but this information is necessary e.g. when
-       importing commits from emails or in the gitk graphical history
-       browser (and possibly at other places in the future or in other
-       porcelains). See e.g. linkgit:git-mailinfo[1]. Defaults to 'utf-8'.
-
-i18n.logOutputEncoding::
-       Character encoding the commit messages are converted to when
-       running 'git log' and friends.
-
-imap::
-       The configuration variables in the 'imap' section are described
-       in linkgit:git-imap-send[1].
-
-index.threads::
-       Specifies the number of threads to spawn when loading the index.
-       This is meant to reduce index load time on multiprocessor machines.
-       Specifying 0 or 'true' will cause Git to auto-detect the number of
-       CPU's and set the number of threads accordingly. Specifying 1 or
-       'false' will disable multithreading. Defaults to 'true'.
-
-index.version::
-       Specify the version with which new index files should be
-       initialized.  This does not affect existing repositories.
-
-init.templateDir::
-       Specify the directory from which templates will be copied.
-       (See the "TEMPLATE DIRECTORY" section of linkgit:git-init[1].)
-
-instaweb.browser::
-       Specify the program that will be used to browse your working
-       repository in gitweb. See linkgit:git-instaweb[1].
-
-instaweb.httpd::
-       The HTTP daemon command-line to start gitweb on your working
-       repository. See linkgit:git-instaweb[1].
-
-instaweb.local::
-       If true the web server started by linkgit:git-instaweb[1] will
-       be bound to the local IP (127.0.0.1).
-
-instaweb.modulePath::
-       The default module path for linkgit:git-instaweb[1] to use
-       instead of /usr/lib/apache2/modules.  Only used if httpd
-       is Apache.
-
-instaweb.port::
-       The port number to bind the gitweb httpd to. See
-       linkgit:git-instaweb[1].
-
-interactive.singleKey::
-       In interactive commands, allow the user to provide one-letter
-       input with a single key (i.e., without hitting enter).
-       Currently this is used by the `--patch` mode of
-       linkgit:git-add[1], linkgit:git-checkout[1], linkgit:git-commit[1],
-       linkgit:git-reset[1], and linkgit:git-stash[1]. Note that this
-       setting is silently ignored if portable keystroke input
-       is not available; requires the Perl module Term::ReadKey.
-
-interactive.diffFilter::
-       When an interactive command (such as `git add --patch`) shows
-       a colorized diff, git will pipe the diff through the shell
-       command defined by this configuration variable. The command may
-       mark up the diff further for human consumption, provided that it
-       retains a one-to-one correspondence with the lines in the
-       original diff. Defaults to disabled (no filtering).
-
-log.abbrevCommit::
-       If true, makes linkgit:git-log[1], linkgit:git-show[1], and
-       linkgit:git-whatchanged[1] assume `--abbrev-commit`. You may
-       override this option with `--no-abbrev-commit`.
-
-log.date::
-       Set the default date-time mode for the 'log' command.
-       Setting a value for log.date is similar to using 'git log''s
-       `--date` option.  See linkgit:git-log[1] for details.
-
-log.decorate::
-       Print out the ref names of any commits that are shown by the log
-       command. If 'short' is specified, the ref name prefixes 'refs/heads/',
-       'refs/tags/' and 'refs/remotes/' will not be printed. If 'full' is
-       specified, the full ref name (including prefix) will be printed.
-       If 'auto' is specified, then if the output is going to a terminal,
-       the ref names are shown as if 'short' were given, otherwise no ref
-       names are shown. This is the same as the `--decorate` option
-       of the `git log`.
-
-log.follow::
-       If `true`, `git log` will act as if the `--follow` option was used when
-       a single <path> is given.  This has the same limitations as `--follow`,
-       i.e. it cannot be used to follow multiple files and does not work well
-       on non-linear history.
-
-log.graphColors::
-       A list of colors, separated by commas, that can be used to draw
-       history lines in `git log --graph`.
-
-log.showRoot::
-       If true, the initial commit will be shown as a big creation event.
-       This is equivalent to a diff against an empty tree.
-       Tools like linkgit:git-log[1] or linkgit:git-whatchanged[1], which
-       normally hide the root commit will now show it. True by default.
-
-log.showSignature::
-       If true, makes linkgit:git-log[1], linkgit:git-show[1], and
-       linkgit:git-whatchanged[1] assume `--show-signature`.
-
-log.mailmap::
-       If true, makes linkgit:git-log[1], linkgit:git-show[1], and
-       linkgit:git-whatchanged[1] assume `--use-mailmap`.
+include::config/fastimport.txt[]
+
+include::config/fetch.txt[]
+
+include::config/format.txt[]
+
+include::config/filter.txt[]
+
+include::config/fsck.txt[]
+
+include::config/gc.txt[]
+
+include::config/gitcvs.txt[]
+
+include::config/gitweb.txt[]
+
+include::config/grep.txt[]
+
+include::config/gpg.txt[]
+
+include::config/gui.txt[]
+
+include::config/guitool.txt[]
+
+include::config/help.txt[]
+
+include::config/http.txt[]
+
+include::config/i18n.txt[]
+
+include::config/imap.txt[]
+
+include::config/index.txt[]
+
+include::config/init.txt[]
+
+include::config/instaweb.txt[]
+
+include::config/interactive.txt[]
+
+include::config/log.txt[]
 
 mailinfo.scissors::
        If true, makes linkgit:git-mailinfo[1] (and therefore
@@ -2133,6 +894,8 @@ splitIndex.sharedIndexExpire::
        either created based on it or read from it.
        See linkgit:git-update-index[1].
 
+include::config/ssh.txt[]
+
 status.relativePaths::
        By default, linkgit:git-status[1] shows paths relative to the
        current directory. Setting this variable to `false` shows paths