Merge branch 'nd/packobjectshook-doc-fix' into maint
authorJunio C Hamano <gitster@pobox.com>
Wed, 21 Nov 2018 13:58:01 +0000 (22:58 +0900)
committerJunio C Hamano <gitster@pobox.com>
Wed, 21 Nov 2018 13:58:01 +0000 (22:58 +0900)
Doc update.

* nd/packobjectshook-doc-fix:
config.txt: correct the note about uploadpack.packObjectsHook

1  2 
Documentation/config.txt
diff --combined Documentation/config.txt
index ee3b5dd8ef1d9620a555a526a7d15b917b0353af,8de50b086a5985ccfa022a86c24e7afd32ba5eee..09a2385280111679cba2c32b471ef91a487b14cf
@@@ -41,13 -41,11 +41,13 @@@ in the section header, like in the exam
  --------
  
  Subsection names are case sensitive and can contain any characters except
 -newline (doublequote `"` and backslash can be included by escaping them
 -as `\"` and `\\`, respectively).  Section headers cannot span multiple
 -lines.  Variables may belong directly to a section or to a given subsection.
 -You can have `[section]` if you have `[section "subsection"]`, but you
 -don't need to.
 +newline and the null byte. Doublequote `"` and backslash can be included
 +by escaping them as `\"` and `\\`, respectively. Backslashes preceding
 +other characters are dropped when reading; for example, `\t` is read as
 +`t` and `\0` is read as `0` Section headers cannot span multiple lines.
 +Variables may belong directly to a section or to a given subsection. You
 +can have `[section]` if you have `[section "subsection"]`, but you don't
 +need to.
  
  There is also a deprecated `[section.subsection]` syntax. With this
  syntax, the subsection name is converted to lower-case and is also
@@@ -344,16 -342,6 +344,16 @@@ advice.*:
                Advice shown when you used linkgit:git-checkout[1] to
                move to the detach HEAD state, to instruct how to create
                a local branch after the fact.
 +      checkoutAmbiguousRemoteBranchName::
 +              Advice shown when the argument to
 +              linkgit:git-checkout[1] ambiguously resolves to a
 +              remote tracking branch on more than one remote in
 +              situations where an unambiguous argument would have
 +              otherwise caused a remote-tracking branch to be
 +              checked out. See the `checkout.defaultRemote`
 +              configuration variable for how to set a given remote
 +              to used by default in some situations where this
 +              advice would be printed.
        amWorkDir::
                Advice that shows the location of the patch file when
                linkgit:git-am[1] fails to apply it.
        addEmbeddedRepo::
                Advice on what to do when you've accidentally added one
                git repo inside of another.
 +      ignoredHook::
 +              Advice shown if a hook is ignored because the hook is not
 +              set as executable.
 +      waitingForEditor::
 +              Print a message to the terminal whenever Git is waiting for
 +              editor input from the user.
  --
  
  core.fileMode::
@@@ -400,19 -382,16 +400,19 @@@ core.hideDotFiles:
        default mode is 'dotGitOnly'.
  
  core.ignoreCase::
 -      If true, this option enables various workarounds to enable
 +      Internal variable which enables various workarounds to enable
        Git to work better on filesystems that are not case sensitive,
 -      like FAT. For example, if a directory listing finds
 -      "makefile" when Git expects "Makefile", Git will assume
 +      like APFS, HFS+, FAT, NTFS, etc. For example, if a directory listing
 +      finds "makefile" when Git expects "Makefile", Git will assume
        it is really the same file, and continue to remember it as
        "Makefile".
  +
  The default is false, except linkgit:git-clone[1] or linkgit:git-init[1]
  will probe and set core.ignoreCase true if appropriate when the repository
  is created.
 ++
 +Git relies on the proper configuration of this variable for your operating
 +and file system. Modifying this value may result in unexpected behavior.
  
  core.precomposeUnicode::
        This option is only used by Mac OS implementation of Git.
@@@ -434,13 -413,6 +434,13 @@@ core.protectNTFS:
        8.3 "short" names.
        Defaults to `true` on Windows, and `false` elsewhere.
  
 +core.fsmonitor::
 +      If set, the value of this variable is used as a command which
 +      will identify all files that may have changed since the
 +      requested date/time. This information is used to speed up git by
 +      avoiding unnecessary processing of files that have not changed.
 +      See the "fsmonitor-watchman" section of linkgit:githooks[5].
 +
  core.trustctime::
        If false, the ctime differences between the index and the
        working tree are ignored; useful when the inode change time
@@@ -462,20 -434,10 +462,20 @@@ core.untrackedCache:
        See linkgit:git-update-index[1]. `keep` by default.
  
  core.checkStat::
 -      Determines which stat fields to match between the index
 -      and work tree. The user can set this to 'default' or
 -      'minimal'. Default (or explicitly 'default'), is to check
 -      all fields, including the sub-second part of mtime and ctime.
 +      When missing or is set to `default`, many fields in the stat
 +      structure are checked to detect if a file has been modified
 +      since Git looked at it.  When this configuration variable is
 +      set to `minimal`, sub-second part of mtime and ctime, the
 +      uid and gid of the owner of the file, the inode number (and
 +      the device number, if Git was compiled to use it), are
 +      excluded from the check among these fields, leaving only the
 +      whole-second part of mtime (and ctime, if `core.trustCtime`
 +      is set) and the filesize to be checked.
 ++
 +There are implementations of Git that do not leave usable values in
 +some fields (e.g. JGit); by excluding these fields from the
 +comparison, the `minimal` mode may help interoperability when the
 +same repository is used by these other systems at the same time.
  
  core.quotePath::
        Commands that output paths (e.g. 'ls-files', 'diff'), will
@@@ -553,12 -515,6 +553,12 @@@ core.autocrlf:
        This variable can be set to 'input',
        in which case no output conversion is performed.
  
 +core.checkRoundtripEncoding::
 +      A comma and/or whitespace separated list of encodings that Git
 +      performs UTF-8 round trip checks on if they are used in an
 +      `working-tree-encoding` attribute (see linkgit:gitattributes[5]).
 +      The default value is `SHIFT-JIS`.
 +
  core.symlinks::
        If false, symbolic links are checked out as small plain files that
        contain the link text. linkgit:git-update-index[1] and
@@@ -927,16 -883,6 +927,16 @@@ core.notesRef:
  This setting defaults to "refs/notes/commits", and it can be overridden by
  the `GIT_NOTES_REF` environment variable.  See linkgit:git-notes[1].
  
 +core.commitGraph::
 +      If true, then git will read the commit-graph file (if it exists)
 +      to parse the graph structure of commits. Defaults to false. See
 +      linkgit:git-commit-graph[1] for more information.
 +
 +core.useReplaceRefs::
 +      If set to `false`, behave as if the `--no-replace-objects`
 +      option was given on the command line. See linkgit:git[1] and
 +      linkgit:git-replace[1] for more information.
 +
  core.sparseCheckout::
        Enable "sparse checkout" feature. See section "Sparse checkout" in
        linkgit:git-read-tree[1] for more information.
@@@ -1003,28 -949,6 +1003,28 @@@ 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
@@@ -1052,12 -976,6 +1052,12 @@@ branch.autoSetupRebase:
        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
@@@ -1108,10 -1026,6 +1108,10 @@@ branch.<name>.rebase:
        "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'.
@@@ -1138,58 -1052,10 +1138,58 @@@ browser.<tool>.path:
        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.
 +
  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`,
@@@ -1217,6 -1083,13 +1217,6 @@@ This does not affect linkgit:git-format
  'git-diff-{asterisk}' plumbing commands.  Can be overridden on the
  command line with the `--color[=<when>]` option.
  
 -diff.colorMoved::
 -      If set to either a valid `<mode>` or a true value, moved lines
 -      in a diff are colored differently, for details of valid modes
 -      see '--color-moved' in linkgit:git-diff[1]. If simply set to
 -      true the default color mode will be used. When set to false,
 -      moved lines are not colored.
 -
  color.diff.<slot>::
        Use customized color for diff colorization.  `<slot>` specifies
        which part of the patch to use the specified color, and is one
        (highlighting whitespace errors), `oldMoved` (deleted lines),
        `newMoved` (added lines), `oldMovedDimmed`, `oldMovedAlternative`,
        `oldMovedAlternativeDimmed`, `newMovedDimmed`, `newMovedAlternative`
 -      and `newMovedAlternativeDimmed` (See the '<mode>'
 -      setting of '--color-moved' in linkgit:git-diff[1] for details).
 +      `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.
 +      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
@@@ -1255,10 -1125,8 +1255,10 @@@ color.grep.<slot>:
        filename prefix (when not using `-h`)
  `function`;;
        function name lines (when using `-p`)
 -`linenumber`;;
 +`lineNumber`;;
        line number prefix (when using `-n`)
 +`column`;;
 +      column number prefix (when using `--column`)
  `match`;;
        matching text (same as setting `matchContext` and `matchSelected`)
  `matchContext`;;
@@@ -1290,27 -1158,6 +1290,27 @@@ 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`,
@@@ -1339,15 -1186,6 +1339,15 @@@ color.status.<slot>:
        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
@@@ -1473,14 -1311,6 +1473,14 @@@ credential.<url>.*:
  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::
@@@ -1518,19 -1348,10 +1518,19 @@@ fetch.recurseSubmodules:
  
  fetch.fsckObjects::
        If it is set to true, git-fetch-pack will check all fetched
 -      objects. It will abort in the case of a malformed object or a
 -      broken link. The result of an abort are only dangling objects.
 -      Defaults to false. If not set, the value of `transfer.fsckObjects`
 -      is used instead.
 +      objects. See `transfer.fsckObjects` for what's
 +      checked. Defaults to false. If not set, the value of
 +      `transfer.fsckObjects` is used instead.
 +
 +fetch.fsck.<msg-id>::
 +      Acts like `fsck.<msg-id>`, but is used by
 +      linkgit:git-fetch-pack[1] instead of linkgit:git-fsck[1]. See
 +      the `fsck.<msg-id>` documentation for details.
 +
 +fetch.fsck.skipList::
 +      Acts like `fsck.skipList`, but is used by
 +      linkgit:git-fetch-pack[1] instead of linkgit:git-fsck[1]. See
 +      the `fsck.skipList` documentation for details.
  
  fetch.unpackLimit::
        If the number of objects fetched over the Git native
  
  fetch.prune::
        If true, fetch will automatically behave as if the `--prune`
 -      option was given on the command line.  See also `remote.<name>.prune`.
 +      option was given on the command line.  See also `remote.<name>.prune`
 +      and the PRUNING section of linkgit:git-fetch[1].
 +
 +fetch.pruneTags::
 +      If true, fetch will automatically behave as if the
 +      `refs/tags/*:refs/tags/*` refspec was provided when pruning,
 +      if not set already. This allows for setting both this option
 +      and `fetch.prune` to maintain a 1=1 mapping to upstream
 +      refs. See also `remote.<name>.pruneTags` and the PRUNING
 +      section of linkgit:git-fetch[1].
  
  fetch.output::
        Control how ref update status is printed. Valid values are
        `full` and `compact`. Default value is `full`. See section
        OUTPUT in linkgit:git-fetch[1] for detail.
  
 +fetch.negotiationAlgorithm::
 +      Control how information about the commits in the local repository is
 +      sent when negotiating the contents of the packfile to be sent by the
 +      server. Set to "skipping" to use an algorithm that skips commits in an
 +      effort to converge faster, but may result in a larger-than-necessary
 +      packfile; The default is "default" which instructs Git to use the default algorithm
 +      that never skips commits (unless the server has acknowledged it or one
 +      of its descendants).
 +      Unknown values will cause 'git fetch' to error out.
 ++
 +See also the `--negotiation-tip` option for linkgit:git-fetch[1].
 +
  format.attach::
        Enable multipart/mixed attachments as the default for
        'format-patch'.  The value can also be a double quoted string
@@@ -1672,42 -1472,15 +1672,42 @@@ filter.<driver>.smudge:
        linkgit:gitattributes[5] for details.
  
  fsck.<msg-id>::
 -      Allows overriding the message type (error, warn or ignore) of a
 -      specific message ID such as `missingEmail`.
 -+
 -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.
 -+
 -This feature is intended to support working with legacy repositories
 -which cannot be repaired without disruptive changes.
 +      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 sorted list of object names (i.e. one SHA-1 per
        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.
  
  gc.aggressiveDepth::
        The depth parameter used in the delta compression
@@@ -1753,25 -1517,6 +1753,25 @@@ 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.
 +
  gc.logExpiry::
        If the file gc.log exists, then `git gc --auto` won't run
        unless that file is more than 'gc.logExpiry' old.  Default is
@@@ -1922,9 -1667,6 +1922,9 @@@ gitweb.snapshot:
  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`,
@@@ -1955,16 -1697,6 +1955,16 @@@ gpg.program:
        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".
 +
  gui.commitMsgWidth::
        Defines how wide the commit message window is in the
        linkgit:git-gui[1]. "75" is the default.
@@@ -2184,7 -1916,6 +2184,7 @@@ http.sslVersion:
        - tlsv1.0
        - tlsv1.1
        - tlsv1.2
 +      - tlsv1.3
  
  +
  Can be overridden by the `GIT_SSL_VERSION` environment variable.
@@@ -2207,8 -1938,8 +2207,8 @@@ empty string
  
  http.sslVerify::
        Whether to verify the SSL certificate when fetching or pushing
 -      over HTTPS. Can be overridden by the `GIT_SSL_NO_VERIFY` environment
 -      variable.
 +      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
@@@ -2350,40 -2081,15 +2350,40 @@@ matched against are those given directl
  visited as a result of a redirection do not participate in matching.
  
  ssh.variant::
 -      Depending on the value of the environment variables `GIT_SSH` or
 -      `GIT_SSH_COMMAND`, or the config setting `core.sshCommand`, Git
 -      auto-detects whether to adjust its command-line parameters for use
 -      with plink or tortoiseplink, as opposed to the default (OpenSSH).
 +      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:
 ++
 +--
 +
 +* `ssh` - [-p port] [-4] [-6] [-o option] [username@]host command
 +
 +* `simple` - [username@]host command
 +
 +* `plink` or `putty` - [-P port] [-4] [-6] [username@]host command
 +
 +* `tortoiseplink` - [-P port] [-4] [-6] -batch [username@]host command
 +
 +--
  +
 -The config variable `ssh.variant` can be set to override this auto-detection;
 -valid values are `ssh`, `plink`, `putty` or `tortoiseplink`. Any other value
 -will be treated as normal ssh. This setting can be overridden via the
 -environment variable `GIT_SSH_VARIANT`.
 +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
@@@ -2649,7 -2355,6 +2649,7 @@@ pack.window:
  pack.depth::
        The maximum delta depth used by linkgit:git-pack-objects[1] when no
        maximum depth is given on the command line. Defaults to 50.
 +      Maximum value is 4095.
  
  pack.windowMemory::
        The maximum size of memory that is consumed by each thread
@@@ -2686,8 -2391,7 +2686,8 @@@ pack.deltaCacheLimit:
        The maximum size of a delta, that is cached in
        linkgit:git-pack-objects[1]. This cache is used to speed up the
        writing object phase by not having to recompute the final delta
 -      result once the best match for all objects is found. Defaults to 1000.
 +      result once the best match for all objects is found.
 +      Defaults to 1000. Maximum value is 65535.
  
  pack.threads::
        Specifies the number of threads to spawn when searching for best
@@@ -2813,25 -2517,6 +2813,25 @@@ The protocol names currently used by gi
      `hg` to allow the `git-remote-hg` helper)
  --
  
 +protocol.version::
 +      Experimental. If set, clients will attempt to communicate with a
 +      server using the specified protocol version.  If unset, no
 +      attempt will be made by the client to communicate using a
 +      particular protocol version, this results in protocol version 0
 +      being used.
 +      Supported versions:
 ++
 +--
 +
 +* `0` - the original wire protocol.
 +
 +* `1` - the original wire protocol with the addition of a version string
 +  in the initial response from the server.
 +
 +* `2` - link:technical/protocol-v2.html[wire protocol version 2].
 +
 +--
 +
  pull.ff::
        By default, Git does not create an extra merge commit when merging
        a commit that is a descendant of the current commit. Instead, the
@@@ -2848,10 -2533,6 +2848,10 @@@ pull.rebase:
        pull" is run. See "branch.<name>.rebase" for setting this on a
        per-branch basis.
  +
 +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'.
@@@ -2940,35 -2621,6 +2940,35 @@@ push.gpgSign:
        override a value from a lower-priority config file. An explicit
        command-line flag always overrides this config option.
  
 +push.pushOption::
 +      When no `--push-option=<option>` argument is given from the
 +      command line, `git push` behaves as if each <value> of
 +      this variable is given as `--push-option=<value>`.
 ++
 +This is a multi-valued variable, and an empty value can be used in a
 +higher priority configuration file (e.g. `.git/config` in a
 +repository) to clear the values inherited from a lower priority
 +configuration files (e.g. `$HOME/.gitconfig`).
 ++
 +--
 +
 +Example:
 +
 +/etc/gitconfig
 +  push.pushoption = a
 +  push.pushoption = b
 +
 +~/.gitconfig
 +  push.pushoption = c
 +
 +repo/.git/config
 +  push.pushoption =
 +  push.pushoption = b
 +
 +This will result in only b (a and c are cleared).
 +
 +--
 +
  push.recurseSubmodules::
        Make sure all submodule commits used by the revisions to be pushed
        are available on a remote-tracking branch. If the value is 'check'
        is retained. You may override this configuration at time of push by
        specifying '--recurse-submodules=check|on-demand|no'.
  
 -rebase.stat::
 -      Whether to show a diffstat of what changed upstream since the last
 -      rebase. False by default.
 -
 -rebase.autoSquash::
 -      If set to true enable `--autosquash` option by default.
 -
 -rebase.autoStash::
 -      When set to true, automatically create a temporary stash entry
 -      before the operation begins, and apply it after the operation
 -      ends.  This means that you can run rebase on a dirty worktree.
 -      However, use with care: the final stash application after a
 -      successful rebase might result in non-trivial conflicts.
 -      Defaults to false.
 -
 -rebase.missingCommitsCheck::
 -      If set to "warn", git rebase -i will print a warning if some
 -      commits are removed (e.g. a line was deleted), however the
 -      rebase will still proceed. If set to "error", it will print
 -      the previous warning and stop the rebase, 'git rebase
 -      --edit-todo' can then be used to correct the error. If set to
 -      "ignore", no checking is done.
 -      To drop a commit without warning or error, use the `drop`
 -      command in the todo-list.
 -      Defaults to "ignore".
 -
 -rebase.instructionFormat::
 -      A format string, as specified in linkgit:git-log[1], to be used for
 -      the instruction list during an interactive rebase.  The format will automatically
 -      have the long commit hash prepended to the format.
 +include::rebase-config.txt[]
  
  receive.advertiseAtomic::
        By default, git-receive-pack will advertise the atomic push
@@@ -3020,21 -2701,32 +3020,21 @@@ receive.certNonceSlop:
  
  receive.fsckObjects::
        If it is set to true, git-receive-pack will check all received
 -      objects. It will abort in the case of a malformed object or a
 -      broken link. The result of an abort are only dangling objects.
 -      Defaults to false. If not set, the value of `transfer.fsckObjects`
 -      is used instead.
 +      objects. See `transfer.fsckObjects` for what's checked.
 +      Defaults to false. If not set, the value of
 +      `transfer.fsckObjects` is used instead.
  
  receive.fsck.<msg-id>::
 -      When `receive.fsckObjects` is set to true, errors can be switched
 -      to warnings and vice versa by configuring the `receive.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
 -      `receive.fsck.missingEmail = ignore` will hide that issue.
 -+
 -This feature is intended to support working with legacy repositories
 -which would not pass pushing when `receive.fsckObjects = true`, allowing
 -the host to accept repositories with certain known issues but still catch
 -other issues.
 +      Acts like `fsck.<msg-id>`, but is used by
 +      linkgit:git-receive-pack[1] instead of
 +      linkgit:git-fsck[1]. See the `fsck.<msg-id>` documentation for
 +      details.
  
  receive.fsck.skipList::
 -      The path to a sorted list of object names (i.e. one SHA-1 per
 -      line) that are known to be broken in a non-fatal way and should
 -      be ignored. 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.
 +      Acts like `fsck.skipList`, but is used by
 +      linkgit:git-receive-pack[1] instead of
 +      linkgit:git-fsck[1]. See the `fsck.skipList` documentation for
 +      details.
  
  receive.keepAlive::
        After receiving the pack from the client, `receive-pack` may
@@@ -3179,15 -2871,6 +3179,15 @@@ remote.<name>.prune:
        remote (as if the `--prune` option was given on the command line).
        Overrides `fetch.prune` settings, if any.
  
 +remote.<name>.pruneTags::
 +      When set to true, fetching from this remote by default will also
 +      remove any local tags that no longer exist on the remote if pruning
 +      is activated in general via `remote.<name>.prune`, `fetch.prune` or
 +      `--prune`. Overrides `fetch.pruneTags` settings, if any.
 ++
 +See also `remote.<name>.prune` and the PRUNING section of
 +linkgit:git-fetch[1].
 +
  remotes.<group>::
        The list of remotes which are fetched by "git remote update
        <group>".  See linkgit:git-remote[1].
@@@ -3268,7 -2951,6 +3268,7 @@@ sendemail.smtpPass:
  sendemail.suppresscc::
  sendemail.suppressFrom::
  sendemail.to::
 +sendemail.tocmd::
  sendemail.smtpDomain::
  sendemail.smtpServer::
  sendemail.smtpServerPort::
@@@ -3343,18 -3025,6 +3343,18 @@@ status.displayCommentPrefix:
        behavior of linkgit:git-status[1] in Git 1.8.4 and previous.
        Defaults to false.
  
 +status.renameLimit::
 +      The number of files to consider when performing rename detection
 +      in linkgit:git-status[1] and linkgit:git-commit[1]. Defaults to
 +      the value of diff.renameLimit.
 +
 +status.renames::
 +      Whether and how Git detects renames in linkgit:git-status[1] and
 +      linkgit:git-commit[1] .  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 the value of diff.renames.
 +
  status.showStash::
        If set to true, linkgit:git-status[1] will display the number of
        entries currently stashed away.
@@@ -3456,18 -3126,16 +3456,18 @@@ submodule.<name>.ignore:
  submodule.<name>.active::
        Boolean value indicating if the submodule is of interest to git
        commands.  This config option takes precedence over the
 -      submodule.active config option.
 +      submodule.active config option. See linkgit:gitsubmodules[7] for
 +      details.
  
  submodule.active::
        A repeated field which contains a pathspec used to match against a
        submodule's path to determine if the submodule is of interest to git
 -      commands.
 +      commands. See linkgit:gitsubmodules[7] for details.
  
  submodule.recurse::
        Specifies if commands recurse into submodules by default. This
 -      applies to all commands that have a `--recurse-submodules` option.
 +      applies to all commands that have a `--recurse-submodules` option,
 +      except `clone`.
        Defaults to false.
  
  submodule.fetchJobs::
@@@ -3509,40 -3177,6 +3509,40 @@@ transfer.fsckObjects:
        When `fetch.fsckObjects` or `receive.fsckObjects` are
        not set, the value of this variable is used instead.
        Defaults to false.
 ++
 +When set, the fetch or receive will abort in the case of a malformed
 +object or a link to a nonexistent object. In addition, various other
 +issues are checked for, including legacy issues (see `fsck.<msg-id>`),
 +and potential security issues like the existence of a `.GIT` directory
 +or a malicious `.gitmodules` file (see the release notes for v2.2.1
 +and v2.17.1 for details). Other sanity and security checks may be
 +added in future releases.
 ++
 +On the receiving side, failing fsckObjects will make those objects
 +unreachable, see "QUARANTINE ENVIRONMENT" in
 +linkgit:git-receive-pack[1]. On the fetch side, malformed objects will
 +instead be left unreferenced in the repository.
 ++
 +Due to the non-quarantine nature of the `fetch.fsckObjects`
 +implementation it can not be relied upon to leave the object store
 +clean like `receive.fsckObjects` can.
 ++
 +As objects are unpacked they're written to the object store, so there
 +can be cases where malicious objects get introduced even though the
 +"fetch" failed, only to have a subsequent "fetch" succeed because only
 +new incoming objects are checked, not those that have already been
 +written to the object store. That difference in behavior should not be
 +relied upon. In the future, such objects may be quarantined for
 +"fetch" as well.
 ++
 +For now, the paranoid need to find some way to emulate the quarantine
 +environment if they'd like the same protection as "push". E.g. in the
 +case of an internal mirror do the mirroring in two steps, one to fetch
 +the untrusted objects, and then do a second "push" (which will use the
 +quarantine) to another internal repo, and have internal clients
 +consume this pushed-to repository, or embargo internal fetches and
 +only allow them once a full "fsck" has run (and no new fetches have
 +happened in the meantime).
  
  transfer.hideRefs::
        String(s) `receive-pack` and `upload-pack` use to decide which
@@@ -3634,22 -3268,15 +3634,22 @@@ uploadpack.packObjectsHook:
        was run. I.e., `upload-pack` will feed input intended for
        `pack-objects` to the hook, and expects a completed packfile on
        stdout.
- uploadpack.allowFilter::
-       If this option is set, `upload-pack` will support partial
-       clone and partial fetch object filtering.
  +
  Note that this configuration variable is ignored if it is seen in the
  repository-level config (this is a safety measure against fetching from
  untrusted repositories).
  
+ uploadpack.allowFilter::
+       If this option is set, `upload-pack` will support partial
+       clone and partial fetch object filtering.
 +uploadpack.allowRefInWant::
 +      If this option is set, `upload-pack` will support the `ref-in-want`
 +      feature of the protocol version 2 `fetch` command.  This feature
 +      is intended for the benefit of load-balanced servers which may
 +      not have the same view of what OIDs their refs point to due to
 +      replication delay.
 +
  url.<base>.insteadOf::
        Any URL that starts with this value will be rewritten to
        start, instead, with <base>. In cases where some site serves a
@@@ -3746,13 -3373,3 +3746,13 @@@ web.browser:
        Specify a web browser that may be used by some commands.
        Currently only linkgit:git-instaweb[1] and linkgit:git-help[1]
        may use it.
 +
 +worktree.guessRemote::
 +      With `add`, if no branch argument, and neither of `-b` nor
 +      `-B` nor `--detach` are given, the command defaults to
 +      creating a new branch from HEAD.  If `worktree.guessRemote` is
 +      set to true, `worktree add` tries to find a remote-tracking
 +      branch whose name uniquely matches the new branch name.  If
 +      such a branch exists, it is checked out and set as "upstream"
 +      for the new branch.  If no such match can be found, it falls
 +      back to creating a new branch from the current HEAD.