Merge branch 'ah/doc-empty-string-is-false' into next
authorJunio C Hamano <gitster@pobox.com>
Sun, 20 Aug 2017 06:07:15 +0000 (23:07 -0700)
committerJunio C Hamano <gitster@pobox.com>
Sun, 20 Aug 2017 06:07:15 +0000 (23:07 -0700)
Doc update.

* ah/doc-empty-string-is-false:
doc: clarify "config --bool" behaviour with empty string

1  2 
Documentation/config.txt
Documentation/git.txt
diff --combined Documentation/config.txt
index 5d3ecfb489b71119d23452d42863c3e3e9c8848f,8886b1fcfb0f7b3fd29f1b1a99ff2484356c8e18..5e4510fb96225f44418a8fc952f84e0d4f79f7b0
@@@ -79,84 -79,18 +79,84 @@@ escape sequences) are invalid
  Includes
  ~~~~~~~~
  
 -You can include one config file from another by setting the special
 -`include.path` variable to the name of the file to be included. The
 -variable takes a pathname as its value, and is subject to tilde
 -expansion.
 +The `include` and `includeIf` sections allow you to include config
 +directives from another source. These sections behave identically to
 +each other with the exception that `includeIf` sections may be ignored
 +if their condition does not evaluate to true; see "Conditional includes"
 +below.
  
 -The
 -included file is expanded immediately, as if its contents had been
 -found at the location of the include directive. If the value of the
 -`include.path` variable is a relative path, the path is considered to be
 -relative to the configuration file in which the include directive was
 -found.  See below for examples.
 +You can include a config file from another by setting the special
 +`include.path` (or `includeIf.*.path`) variable to the name of the file
 +to be included. The variable takes a pathname as its value, and is
 +subject to tilde expansion. These variables can be given multiple times.
  
 +The contents of the included file are inserted immediately, as if they
 +had been found at the location of the include directive. If the value of the
 +variable is a relative path, the path is considered to
 +be relative to the configuration file in which the include directive
 +was found.  See below for examples.
 +
 +Conditional includes
 +~~~~~~~~~~~~~~~~~~~~
 +
 +You can include a config file from another conditionally by setting a
 +`includeIf.<condition>.path` variable to the name of the file to be
 +included.
 +
 +The condition starts with a keyword followed by a colon and some data
 +whose format and meaning depends on the keyword. Supported keywords
 +are:
 +
 +`gitdir`::
 +
 +      The data that follows the keyword `gitdir:` is used as a glob
 +      pattern. If the location of the .git directory matches the
 +      pattern, the include condition is met.
 ++
 +The .git location may be auto-discovered, or come from `$GIT_DIR`
 +environment variable. If the repository is auto discovered via a .git
 +file (e.g. from submodules, or a linked worktree), the .git location
 +would be the final location where the .git directory is, not where the
 +.git file is.
 ++
 +The pattern can contain standard globbing wildcards and two additional
 +ones, `**/` and `/**`, that can match multiple path components. Please
 +refer to linkgit:gitignore[5] for details. For convenience:
 +
 + * If the pattern starts with `~/`, `~` will be substituted with the
 +   content of the environment variable `HOME`.
 +
 + * If the pattern starts with `./`, it is replaced with the directory
 +   containing the current config file.
 +
 + * If the pattern does not start with either `~/`, `./` or `/`, `**/`
 +   will be automatically prepended. For example, the pattern `foo/bar`
 +   becomes `**/foo/bar` and would match `/any/path/to/foo/bar`.
 +
 + * If the pattern ends with `/`, `**` will be automatically added. For
 +   example, the pattern `foo/` becomes `foo/**`. In other words, it
 +   matches "foo" and everything inside, recursively.
 +
 +`gitdir/i`::
 +      This is the same as `gitdir` except that matching is done
 +      case-insensitively (e.g. on case-insensitive file sytems)
 +
 +A few more notes on matching via `gitdir` and `gitdir/i`:
 +
 + * Symlinks in `$GIT_DIR` are not resolved before matching.
 +
 + * Both the symlink & realpath versions of paths will be matched
 +   outside of `$GIT_DIR`. E.g. if ~/git is a symlink to
 +   /mnt/storage/git, both `gitdir:~/git` and `gitdir:/mnt/storage/git`
 +   will match.
 ++
 +This was not the case in the initial release of this feature in
 +v2.13.0, which only matched the realpath version. Configuration that
 +wants to be compatible with the initial release of this feature needs
 +to either specify only the realpath version, or both versions.
 +
 + * Note that "../" is not special and will match literally, which is
 +   unlikely what you want.
  
  Example
  ~~~~~~~
  
        [include]
                path = /path/to/foo.inc ; include by absolute path
 -              path = foo ; expand "foo" relative to the current file
 -              path = ~/foo ; expand "foo" in your `$HOME` directory
 +              path = foo.inc ; find "foo.inc" relative to the current file
 +              path = ~/foo.inc ; find "foo.inc" in your `$HOME` directory
 +
 +      ; include if $GIT_DIR is /path/to/foo/.git
 +      [includeIf "gitdir:/path/to/foo/.git"]
 +              path = /path/to/foo.inc
 +
 +      ; include for all repositories inside /path/to/group
 +      [includeIf "gitdir:/path/to/group/"]
 +              path = /path/to/foo.inc
 +
 +      ; include for all repositories inside $HOME/to/group
 +      [includeIf "gitdir:~/to/group/"]
 +              path = /path/to/foo.inc
  
 +      ; relative paths are always relative to the including
 +      ; file (if the condition is true); their location is not
 +      ; affected by the condition
 +      [includeIf "gitdir:/path/to/group/"]
 +              path = foo.inc
  
  Values
  ~~~~~~
@@@ -216,15 -133,15 +216,15 @@@ boolean:
         synonyms are accepted for 'true' and 'false'; these are all
         case-insensitive.
  
-        true;; Boolean true can be spelled as `yes`, `on`, `true`,
-               or `1`.  Also, a variable defined without `= <value>`
+       true;; Boolean true literals are `yes`, `on`, `true`,
+               and `1`.  Also, a variable defined without `= <value>`
                is taken as true.
  
-        false;; Boolean false can be spelled as `no`, `off`,
-               `false`, or `0`.
+       false;; Boolean false literals are `no`, `off`, `false`,
+               `0` and the empty string.
  +
  When converting value to the canonical form using `--bool` type
- specifier; 'git config' will ensure that the output is "true" or
+ specifier, 'git config' will ensure that the output is "true" or
  "false" (spelled in lowercase).
  
  integer::
@@@ -253,9 -170,6 +253,9 @@@ The position of any attributes with res
  be turned off by prefixing them with `no` or `no-` (e.g., `noreverse`,
  `no-ul`, etc).
  +
 +An empty color string produces no color effect at all. This can be used
 +to avoid coloring specific elements without disabling color entirely.
 ++
  For git's pre-defined color slots, the attributes are meant to be reset
  at the beginning of each item in the colored output. So setting
  `color.decorate.branch` to `black` will paint that branch name in a
@@@ -348,9 -262,6 +348,9 @@@ advice.*:
        rmHints::
                In case of failure in the output of linkgit:git-rm[1],
                show directions on how to proceed from the current state.
 +      addEmbeddedRepo::
 +              Advice on what to do when you've accidentally added one
 +              git repo inside of another.
  --
  
  core.fileMode::
        is to be honored.
  +
  Some filesystems lose the executable bit when a file that is
 -marked as executable is checked out, or checks out an
 +marked as executable is checked out, or checks out a
  non-executable file with executable bit on.
  linkgit:git-clone[1] or linkgit:git-init[1] probe the filesystem
  to see if it handles the executable bit correctly
@@@ -420,10 -331,6 +420,10 @@@ core.trustctime:
        crawlers and some backup systems).
        See linkgit:git-update-index[1]. True by default.
  
 +core.splitIndex::
 +      If true, the split-index feature of the index will be used.
 +      See linkgit:git-update-index[1]. False by default.
 +
  core.untrackedCache::
        Determines what to do about the untracked cache feature of the
        index. It will be kept, if this variable is unset or set to
@@@ -440,19 -347,16 +440,19 @@@ core.checkStat:
        all fields, including the sub-second part of mtime and ctime.
  
  core.quotePath::
 -      The commands that output paths (e.g. 'ls-files',
 -      'diff'), when not given the `-z` option, will quote
 -      "unusual" characters in the pathname by enclosing the
 -      pathname in a double-quote pair and with backslashes the
 -      same way strings in C source code are quoted.  If this
 -      variable is set to false, the bytes higher than 0x80 are
 -      not quoted but output as verbatim.  Note that double
 -      quote, backslash and control characters are always
 -      quoted without `-z` regardless of the setting of this
 -      variable.
 +      Commands that output paths (e.g. 'ls-files', 'diff'), will
 +      quote "unusual" characters in the pathname by enclosing the
 +      pathname in double-quotes and escaping those characters with
 +      backslashes in the same way C escapes control characters (e.g.
 +      `\t` for TAB, `\n` for LF, `\\` for backslash) or bytes with
 +      values larger than 0x80 (e.g. octal `\302\265` for "micro" in
 +      UTF-8).  If this variable is set to false, bytes higher than
 +      0x80 are not considered "unusual" any more. Double-quotes,
 +      backslash and control characters are always escaped regardless
 +      of the setting of this variable.  A simple space character is
 +      not considered "unusual".  Many commands can output pathnames
 +      completely verbatim using the `-z` option. The default value
 +      is true.
  
  core.eol::
        Sets the line ending type to use in the working directory for
@@@ -613,12 -517,10 +613,12 @@@ core.logAllRefUpdates:
        "`$GIT_DIR/logs/<ref>`", by appending the new and old
        SHA-1, the date/time and the reason of the update, but
        only when the file exists.  If this configuration
 -      variable is set to true, missing "`$GIT_DIR/logs/<ref>`"
 +      variable is set to `true`, missing "`$GIT_DIR/logs/<ref>`"
        file is automatically created for branch heads (i.e. under
 -      refs/heads/), remote refs (i.e. under refs/remotes/),
 -      note refs (i.e. under refs/notes/), and the symbolic ref HEAD.
 +      `refs/heads/`), remote refs (i.e. under `refs/remotes/`),
 +      note refs (i.e. under `refs/notes/`), and the symbolic ref `HEAD`.
 +      If it is set to `always`, then a missing reflog is automatically
 +      created for any ref under `refs/`.
  +
  This information can be used to determine what commit
  was the tip of a branch "2 days ago".
@@@ -686,8 -588,7 +686,8 @@@ core.packedGitLimit:
        bytes at once to complete an operation it will unmap existing
        regions to reclaim virtual address space within the process.
  +
 -Default is 256 MiB on 32 bit platforms and 8 GiB on 64 bit platforms.
 +Default is 256 MiB on 32 bit platforms and 32 TiB (effectively
 +unlimited) on 64 bit platforms.
  This should be reasonable for all users/operating systems, except on
  the largest projects.  You probably do not need to adjust this value.
  +
@@@ -762,13 -663,13 +762,13 @@@ alternative to having an `init.template
  default hooks.
  
  core.editor::
 -      Commands such as `commit` and `tag` that lets you edit
 -      messages by launching an editor uses the value of this
 +      Commands such as `commit` and `tag` that let you edit
 +      messages by launching an editor use the value of this
        variable when it is set, and the environment variable
        `GIT_EDITOR` is not set.  See linkgit:git-var[1].
  
  core.commentChar::
 -      Commands such as `commit` and `tag` that lets you edit
 +      Commands such as `commit` and `tag` that let you edit
        messages consider a line that begins with this character
        commented, and removes them after the editor returns
        (default '#').
@@@ -887,7 -788,6 +887,7 @@@ core.abbrev:
        computed based on the approximate number of packed objects
        in your repository, which hopefully is enough for
        abbreviated object names to stay unique for some time.
 +      The minimum length is 4.
  
  add.ignoreErrors::
  add.ignore-errors (deprecated)::
@@@ -1077,25 -977,14 +1077,25 @@@ 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
        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), or `whitespace`
 -      (highlighting whitespace errors).
 +      `new` (added lines), `commit` (commit headers), `whitespace`
 +      (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).
  
  color.decorate.<slot>::
        Use customized color for 'git log --decorate' output.  `<slot>` is one
@@@ -1174,10 -1063,7 +1174,10 @@@ color.status.<slot>:
        `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), or
 +      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.ui::
@@@ -1511,12 -1397,6 +1511,12 @@@ gc.autoDetach:
        Make `git gc --auto` return immediately and run in background
        if the system supports it. Default is true.
  
 +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
 +      "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
@@@ -2034,10 -1914,7 +2034,10 @@@ http.<url>.*:
    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 exactly between the config key and the URL.
 +  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.
@@@ -2072,17 -1949,6 +2072,17 @@@ Environment variable settings always ov
  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::
 +      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).
 ++
 +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`.
 +
  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
@@@ -2170,20 -2036,12 +2170,20 @@@ log.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`.
@@@ -2463,52 -2321,6 +2463,52 @@@ pretty.<name>:
        Note that an alias with the same name as a built-in format
        will be silently ignored.
  
 +protocol.allow::
 +      If set, provide a user defined default policy for all protocols which
 +      don't explicitly have a policy (`protocol.<name>.allow`).  By default,
 +      if unset, known-safe protocols (http, https, git, ssh, file) have a
 +      default policy of `always`, known-dangerous protocols (ext) have a
 +      default policy of `never`, and all other protocols have a default
 +      policy of `user`.  Supported policies:
 ++
 +--
 +
 +* `always` - protocol is always able to be used.
 +
 +* `never` - protocol is never able to be used.
 +
 +* `user` - protocol is only able to be used when `GIT_PROTOCOL_FROM_USER` is
 +  either unset or has a value of 1.  This policy should be used when you want a
 +  protocol to be directly usable by the user but don't want it used by commands which
 +  execute clone/fetch/push commands without user input, e.g. recursive
 +  submodule initialization.
 +
 +--
 +
 +protocol.<name>.allow::
 +      Set a policy to be used by protocol `<name>` with clone/fetch/push
 +      commands. See `protocol.allow` above for the available policies.
 ++
 +The protocol names currently used by git are:
 ++
 +--
 +  - `file`: any local file-based path (including `file://` URLs,
 +    or local paths)
 +
 +  - `git`: the anonymous git protocol over a direct TCP
 +    connection (or proxy, if configured)
 +
 +  - `ssh`: git over ssh (including `host:path` syntax,
 +    `ssh://`, etc).
 +
 +  - `http`: git over http, both "smart http" and "dumb http".
 +    Note that this does _not_ include `https`; if you want to configure
 +    both, you must do so individually.
 +
 +  - any external helpers are named by their protocol (e.g., use
 +    `hg` to allow the `git-remote-hg` helper)
 +--
 +
  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
@@@ -2565,8 -2377,6 +2565,8 @@@ push.default:
    pushing to the same repository you would normally pull from
    (i.e. central workflow).
  
 +* `tracking` - This is a deprecated synonym for `upstream`.
 +
  * `simple` - in centralized workflow, work like `upstream` with an
    added safety to refuse to push if the upstream branch's name is
    different from the local one.
@@@ -2635,7 -2445,7 +2635,7 @@@ rebase.autoSquash:
        If set to true enable `--autosquash` option by default.
  
  rebase.autoStash::
 -      When set to true, automatically create a temporary stash
 +      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
@@@ -2664,8 -2474,9 +2664,8 @@@ receive.advertiseAtomic:
        capability, set this variable to false.
  
  receive.advertisePushOptions::
 -      By default, git-receive-pack will advertise the push options
 -      capability to its clients. If you don't want to advertise this
 -      capability, set this variable to false.
 +      When set to true, git-receive-pack will advertise the push options
 +      capability to its clients. False by default.
  
  receive.autogc::
        By default, git-receive-pack will run "git-gc --auto" after
@@@ -2957,45 -2768,10 +2957,45 @@@ sendemail.xmailer:
  sendemail.signedoffcc (deprecated)::
        Deprecated alias for `sendemail.signedoffbycc`.
  
 +sendemail.smtpBatchSize::
 +      Number of messages to be sent per connection, after that a relogin
 +      will happen.  If the value is 0 or undefined, send all messages in
 +      one connection.
 +      See also the `--batch-size` option of linkgit:git-send-email[1].
 +
 +sendemail.smtpReloginDelay::
 +      Seconds wait before reconnecting to smtp server.
 +      See also the `--relogin-delay` option of linkgit:git-send-email[1].
 +
  showbranch.default::
        The default set of branches for linkgit:git-show-branch[1].
        See linkgit:git-show-branch[1].
  
 +splitIndex.maxPercentChange::
 +      When the split index feature is used, this specifies the
 +      percent of entries the split index can contain compared to the
 +      total number of entries in both the split index and the shared
 +      index before a new shared index is written.
 +      The value should be between 0 and 100. If the value is 0 then
 +      a new shared index is always written, if it is 100 a new
 +      shared index is never written.
 +      By default the value is 20, so a new shared index is written
 +      if the number of entries in the split index would be greater
 +      than 20 percent of the total number of entries.
 +      See linkgit:git-update-index[1].
 +
 +splitIndex.sharedIndexExpire::
 +      When the split index feature is used, shared index files that
 +      were not modified since the time this variable specifies will
 +      be removed when a new shared index file is created. The value
 +      "now" expires all entries immediately, and "never" suppresses
 +      expiration altogether.
 +      The default value is "2.weeks.ago".
 +      Note that a shared index file is considered modified (for the
 +      purpose of expiration) each time a new split-index file is
 +      either created based on it or read from it.
 +      See linkgit:git-update-index[1].
 +
  status.relativePaths::
        By default, linkgit:git-status[1] shows paths relative to the
        current directory. Setting this variable to `false` shows paths
@@@ -3017,11 -2793,6 +3017,11 @@@ status.displayCommentPrefix:
        behavior of linkgit:git-status[1] in Git 1.8.4 and previous.
        Defaults to false.
  
 +status.showStash::
 +      If set to true, linkgit:git-status[1] will display the number of
 +      entries currently stashed away.
 +      Defaults to false.
 +
  status.showUntrackedFiles::
        By default, linkgit:git-status[1] and linkgit:git-commit[1] show
        files which are not currently tracked by Git. Directories which
@@@ -3059,21 -2830,20 +3059,21 @@@ status.submoduleSummary:
  
  stash.showPatch::
        If this is set to true, the `git stash show` command without an
 -      option will show the stash in patch form.  Defaults to false.
 +      option will show the stash entry in patch form.  Defaults to false.
        See description of 'show' command in linkgit:git-stash[1].
  
  stash.showStat::
        If this is set to true, the `git stash show` command without an
 -      option will show diffstat of the stash.  Defaults to true.
 +      option will show diffstat of the stash entry.  Defaults to true.
        See description of 'show' command in linkgit:git-stash[1].
  
  submodule.<name>.url::
        The URL for a submodule. This variable is copied from the .gitmodules
        file to the git config via 'git submodule init'. The user can change
        the configured URL before obtaining the submodule via 'git submodule
 -      update'. After obtaining the submodule, the presence of this variable
 -      is used as a sign whether the submodule is of interest to git commands.
 +      update'. If neither submodule.<name>.active or submodule.active are
 +      set, the presence of this variable is used as a fallback to indicate
 +      whether the submodule is of interest to git commands.
        See linkgit:git-submodule[1] and linkgit:gitmodules[5] for details.
  
  submodule.<name>.update::
@@@ -3111,21 -2881,6 +3111,21 @@@ submodule.<name>.ignore:
        "--ignore-submodules" option. The 'git submodule' commands are not
        affected by this setting.
  
 +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::
 +      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.
 +
 +submodule.recurse::
 +      Specifies if commands recurse into submodules by default. This
 +      applies to all commands that have a `--recurse-submodules` option.
 +      Defaults to false.
 +
  submodule.fetchJobs::
        Specifies how many submodules are fetched/cloned at the same time.
        A positive integer allows up to that number of submodules fetched
@@@ -3139,7 -2894,7 +3139,7 @@@ submodule.alternateLocation:
        value is set to `superproject` the submodule to be cloned computes
        its alternates location relative to the superprojects alternate.
  
 -submodule.alternateErrorStrategy
 +submodule.alternateErrorStrategy::
        Specifies how to treat errors with the alternates for a submodule
        as computed via `submodule.alternateLocation`. Possible values are
        `ignore`, `info`, `die`. Default is `die`.
@@@ -3271,13 -3026,6 +3271,13 @@@ url.<base>.insteadOf:
        the best alternative for the particular user, even for a
        never-before-seen repository on the site.  When more than one
        insteadOf strings match a given URL, the longest match is used.
 ++
 +Note that any protocol restrictions will be applied to the rewritten
 +URL. If the rewrite changes the URL to use a custom protocol or remote
 +helper, you may need to adjust the `protocol.*.allow` config to permit
 +the request.  In particular, protocols you expect to use for submodules
 +must be set to `always` rather than the default of `user`. See the
 +description of `protocol.allow` above.
  
  url.<base>.pushInsteadOf::
        Any URL that starts with this value will not be pushed to;
@@@ -3319,39 -3067,17 +3319,39 @@@ user.signingKey:
        This option is passed unchanged to gpg's --local-user parameter,
        so you may specify a key using any method that gpg supports.
  
 -versionsort.prereleaseSuffix::
 -      When version sort is used in linkgit:git-tag[1], prerelease
 -      tags (e.g. "1.0-rc1") may appear after the main release
 -      "1.0". By specifying the suffix "-rc" in this variable,
 -      "1.0-rc1" will appear before "1.0".
 -+
 -This variable can be specified multiple times, once per suffix. The
 -order of suffixes in the config file determines the sorting order
 -(e.g. if "-pre" appears before "-rc" in the config file then 1.0-preXX
 -is sorted before 1.0-rcXX). The sorting order between different
 -suffixes is undefined if they are in multiple config files.
 +versionsort.prereleaseSuffix (deprecated)::
 +      Deprecated alias for `versionsort.suffix`.  Ignored if
 +      `versionsort.suffix` is set.
 +
 +versionsort.suffix::
 +      Even when version sort is used in linkgit:git-tag[1], tagnames
 +      with the same base version but different suffixes are still sorted
 +      lexicographically, resulting e.g. in prerelease tags appearing
 +      after the main release (e.g. "1.0-rc1" after "1.0").  This
 +      variable can be specified to determine the sorting order of tags
 +      with different suffixes.
 ++
 +By specifying a single suffix in this variable, any tagname containing
 +that suffix will appear before the corresponding main release.  E.g. if
 +the variable is set to "-rc", then all "1.0-rcX" tags will appear before
 +"1.0".  If specified multiple times, once per suffix, then the order of
 +suffixes in the configuration will determine the sorting order of tagnames
 +with those suffixes.  E.g. if "-pre" appears before "-rc" in the
 +configuration, then all "1.0-preX" tags will be listed before any
 +"1.0-rcX" tags.  The placement of the main release tag relative to tags
 +with various suffixes can be determined by specifying the empty suffix
 +among those other suffixes.  E.g. if the suffixes "-rc", "", "-ck" and
 +"-bfs" appear in the configuration in this order, then all "v4.8-rcX" tags
 +are listed first, followed by "v4.8", then "v4.8-ckX" and finally
 +"v4.8-bfsX".
 ++
 +If more than one suffixes match the same tagname, then that tagname will
 +be sorted according to the suffix which starts at the earliest position in
 +the tagname.  If more than one different matching suffixes start at
 +that earliest position, then that tagname will be sorted according to the
 +longest of those suffixes.
 +The sorting order between different suffixes is undefined if they are
 +in multiple config files.
  
  web.browser::
        Specify a web browser that may be used by some commands.
diff --combined Documentation/git.txt
index 7dd5e03280b09f21f59289b0b00cd6fdee0ca3cb,d5ddb38e5692249587919ee8a91551220d8a59e1..6e3a6767e5f0ce347b2363cc7829d8eab042ae0a
@@@ -35,6 -35,502 +35,6 @@@ manual page gives you an overview of th
  A formatted and hyperlinked copy of the latest Git documentation
  can be viewed at `https://git.github.io/htmldocs/git.html`.
  
 -ifdef::stalenotes[]
 -[NOTE]
 -============
 -
 -You are reading the documentation for the latest (possibly
 -unreleased) version of Git, that is available from the 'master'
 -branch of the `git.git` repository.
 -Documentation for older releases are available here:
 -
 -* link:v2.11.2/git.html[documentation for release 2.11.2]
 -
 -* release notes for
 -  link:RelNotes/2.11.2.txt[2.11.2],
 -  link:RelNotes/2.11.1.txt[2.11.1],
 -  link:RelNotes/2.11.0.txt[2.11].
 -
 -* link:v2.10.3/git.html[documentation for release 2.10.3]
 -
 -* release notes for
 -  link:RelNotes/2.10.3.txt[2.10.3],
 -  link:RelNotes/2.10.2.txt[2.10.2],
 -  link:RelNotes/2.10.1.txt[2.10.1],
 -  link:RelNotes/2.10.0.txt[2.10].
 -
 -* link:v2.9.4/git.html[documentation for release 2.9.4]
 -
 -* release notes for
 -  link:RelNotes/2.9.4.txt[2.9.4],
 -  link:RelNotes/2.9.3.txt[2.9.3],
 -  link:RelNotes/2.9.2.txt[2.9.2],
 -  link:RelNotes/2.9.1.txt[2.9.1],
 -  link:RelNotes/2.9.0.txt[2.9].
 -
 -* link:v2.8.5/git.html[documentation for release 2.8.5]
 -
 -* release notes for
 -  link:RelNotes/2.8.5.txt[2.8.5],
 -  link:RelNotes/2.8.4.txt[2.8.4],
 -  link:RelNotes/2.8.3.txt[2.8.3],
 -  link:RelNotes/2.8.2.txt[2.8.2],
 -  link:RelNotes/2.8.1.txt[2.8.1],
 -  link:RelNotes/2.8.0.txt[2.8].
 -
 -* link:v2.7.5/git.html[documentation for release 2.7.5]
 -
 -* release notes for
 -  link:RelNotes/2.7.5.txt[2.7.5],
 -  link:RelNotes/2.7.4.txt[2.7.4],
 -  link:RelNotes/2.7.3.txt[2.7.3],
 -  link:RelNotes/2.7.2.txt[2.7.2],
 -  link:RelNotes/2.7.1.txt[2.7.1],
 -  link:RelNotes/2.7.0.txt[2.7].
 -
 -* link:v2.6.7/git.html[documentation for release 2.6.7]
 -
 -* release notes for
 -  link:RelNotes/2.6.7.txt[2.6.7],
 -  link:RelNotes/2.6.6.txt[2.6.6],
 -  link:RelNotes/2.6.5.txt[2.6.5],
 -  link:RelNotes/2.6.4.txt[2.6.4],
 -  link:RelNotes/2.6.3.txt[2.6.3],
 -  link:RelNotes/2.6.2.txt[2.6.2],
 -  link:RelNotes/2.6.1.txt[2.6.1],
 -  link:RelNotes/2.6.0.txt[2.6].
 -
 -* link:v2.5.6/git.html[documentation for release 2.5.6]
 -
 -* release notes for
 -  link:RelNotes/2.5.6.txt[2.5.6],
 -  link:RelNotes/2.5.5.txt[2.5.5],
 -  link:RelNotes/2.5.4.txt[2.5.4],
 -  link:RelNotes/2.5.3.txt[2.5.3],
 -  link:RelNotes/2.5.2.txt[2.5.2],
 -  link:RelNotes/2.5.1.txt[2.5.1],
 -  link:RelNotes/2.5.0.txt[2.5].
 -
 -* link:v2.4.12/git.html[documentation for release 2.4.12]
 -
 -* release notes for
 -  link:RelNotes/2.4.12.txt[2.4.12],
 -  link:RelNotes/2.4.11.txt[2.4.11],
 -  link:RelNotes/2.4.10.txt[2.4.10],
 -  link:RelNotes/2.4.9.txt[2.4.9],
 -  link:RelNotes/2.4.8.txt[2.4.8],
 -  link:RelNotes/2.4.7.txt[2.4.7],
 -  link:RelNotes/2.4.6.txt[2.4.6],
 -  link:RelNotes/2.4.5.txt[2.4.5],
 -  link:RelNotes/2.4.4.txt[2.4.4],
 -  link:RelNotes/2.4.3.txt[2.4.3],
 -  link:RelNotes/2.4.2.txt[2.4.2],
 -  link:RelNotes/2.4.1.txt[2.4.1],
 -  link:RelNotes/2.4.0.txt[2.4].
 -
 -* link:v2.3.10/git.html[documentation for release 2.3.10]
 -
 -* release notes for
 -  link:RelNotes/2.3.10.txt[2.3.10],
 -  link:RelNotes/2.3.9.txt[2.3.9],
 -  link:RelNotes/2.3.8.txt[2.3.8],
 -  link:RelNotes/2.3.7.txt[2.3.7],
 -  link:RelNotes/2.3.6.txt[2.3.6],
 -  link:RelNotes/2.3.5.txt[2.3.5],
 -  link:RelNotes/2.3.4.txt[2.3.4],
 -  link:RelNotes/2.3.3.txt[2.3.3],
 -  link:RelNotes/2.3.2.txt[2.3.2],
 -  link:RelNotes/2.3.1.txt[2.3.1],
 -  link:RelNotes/2.3.0.txt[2.3].
 -
 -* link:v2.2.3/git.html[documentation for release 2.2.3]
 -
 -* release notes for
 -  link:RelNotes/2.2.3.txt[2.2.3],
 -  link:RelNotes/2.2.2.txt[2.2.2],
 -  link:RelNotes/2.2.1.txt[2.2.1],
 -  link:RelNotes/2.2.0.txt[2.2].
 -
 -* link:v2.1.4/git.html[documentation for release 2.1.4]
 -
 -* release notes for
 -  link:RelNotes/2.1.4.txt[2.1.4],
 -  link:RelNotes/2.1.3.txt[2.1.3],
 -  link:RelNotes/2.1.2.txt[2.1.2],
 -  link:RelNotes/2.1.1.txt[2.1.1],
 -  link:RelNotes/2.1.0.txt[2.1].
 -
 -* link:v2.0.5/git.html[documentation for release 2.0.5]
 -
 -* release notes for
 -  link:RelNotes/2.0.5.txt[2.0.5],
 -  link:RelNotes/2.0.4.txt[2.0.4],
 -  link:RelNotes/2.0.3.txt[2.0.3],
 -  link:RelNotes/2.0.2.txt[2.0.2],
 -  link:RelNotes/2.0.1.txt[2.0.1],
 -  link:RelNotes/2.0.0.txt[2.0.0].
 -
 -* link:v1.9.5/git.html[documentation for release 1.9.5]
 -
 -* release notes for
 -  link:RelNotes/1.9.5.txt[1.9.5],
 -  link:RelNotes/1.9.4.txt[1.9.4],
 -  link:RelNotes/1.9.3.txt[1.9.3],
 -  link:RelNotes/1.9.2.txt[1.9.2],
 -  link:RelNotes/1.9.1.txt[1.9.1],
 -  link:RelNotes/1.9.0.txt[1.9.0].
 -
 -* link:v1.8.5.6/git.html[documentation for release 1.8.5.6]
 -
 -* release notes for
 -  link:RelNotes/1.8.5.6.txt[1.8.5.6],
 -  link:RelNotes/1.8.5.5.txt[1.8.5.5],
 -  link:RelNotes/1.8.5.4.txt[1.8.5.4],
 -  link:RelNotes/1.8.5.3.txt[1.8.5.3],
 -  link:RelNotes/1.8.5.2.txt[1.8.5.2],
 -  link:RelNotes/1.8.5.1.txt[1.8.5.1],
 -  link:RelNotes/1.8.5.txt[1.8.5].
 -
 -* link:v1.8.4.5/git.html[documentation for release 1.8.4.5]
 -
 -* release notes for
 -  link:RelNotes/1.8.4.5.txt[1.8.4.5],
 -  link:RelNotes/1.8.4.4.txt[1.8.4.4],
 -  link:RelNotes/1.8.4.3.txt[1.8.4.3],
 -  link:RelNotes/1.8.4.2.txt[1.8.4.2],
 -  link:RelNotes/1.8.4.1.txt[1.8.4.1],
 -  link:RelNotes/1.8.4.txt[1.8.4].
 -
 -* link:v1.8.3.4/git.html[documentation for release 1.8.3.4]
 -
 -* release notes for
 -  link:RelNotes/1.8.3.4.txt[1.8.3.4],
 -  link:RelNotes/1.8.3.3.txt[1.8.3.3],
 -  link:RelNotes/1.8.3.2.txt[1.8.3.2],
 -  link:RelNotes/1.8.3.1.txt[1.8.3.1],
 -  link:RelNotes/1.8.3.txt[1.8.3].
 -
 -* link:v1.8.2.3/git.html[documentation for release 1.8.2.3]
 -
 -* release notes for
 -  link:RelNotes/1.8.2.3.txt[1.8.2.3],
 -  link:RelNotes/1.8.2.2.txt[1.8.2.2],
 -  link:RelNotes/1.8.2.1.txt[1.8.2.1],
 -  link:RelNotes/1.8.2.txt[1.8.2].
 -
 -* link:v1.8.1.6/git.html[documentation for release 1.8.1.6]
 -
 -* release notes for
 -  link:RelNotes/1.8.1.6.txt[1.8.1.6],
 -  link:RelNotes/1.8.1.5.txt[1.8.1.5],
 -  link:RelNotes/1.8.1.4.txt[1.8.1.4],
 -  link:RelNotes/1.8.1.3.txt[1.8.1.3],
 -  link:RelNotes/1.8.1.2.txt[1.8.1.2],
 -  link:RelNotes/1.8.1.1.txt[1.8.1.1],
 -  link:RelNotes/1.8.1.txt[1.8.1].
 -
 -* link:v1.8.0.3/git.html[documentation for release 1.8.0.3]
 -
 -* release notes for
 -  link:RelNotes/1.8.0.3.txt[1.8.0.3],
 -  link:RelNotes/1.8.0.2.txt[1.8.0.2],
 -  link:RelNotes/1.8.0.1.txt[1.8.0.1],
 -  link:RelNotes/1.8.0.txt[1.8.0].
 -
 -* link:v1.7.12.4/git.html[documentation for release 1.7.12.4]
 -
 -* release notes for
 -  link:RelNotes/1.7.12.4.txt[1.7.12.4],
 -  link:RelNotes/1.7.12.3.txt[1.7.12.3],
 -  link:RelNotes/1.7.12.2.txt[1.7.12.2],
 -  link:RelNotes/1.7.12.1.txt[1.7.12.1],
 -  link:RelNotes/1.7.12.txt[1.7.12].
 -
 -* link:v1.7.11.7/git.html[documentation for release 1.7.11.7]
 -
 -* release notes for
 -  link:RelNotes/1.7.11.7.txt[1.7.11.7],
 -  link:RelNotes/1.7.11.6.txt[1.7.11.6],
 -  link:RelNotes/1.7.11.5.txt[1.7.11.5],
 -  link:RelNotes/1.7.11.4.txt[1.7.11.4],
 -  link:RelNotes/1.7.11.3.txt[1.7.11.3],
 -  link:RelNotes/1.7.11.2.txt[1.7.11.2],
 -  link:RelNotes/1.7.11.1.txt[1.7.11.1],
 -  link:RelNotes/1.7.11.txt[1.7.11].
 -
 -* link:v1.7.10.5/git.html[documentation for release 1.7.10.5]
 -
 -* release notes for
 -  link:RelNotes/1.7.10.5.txt[1.7.10.5],
 -  link:RelNotes/1.7.10.4.txt[1.7.10.4],
 -  link:RelNotes/1.7.10.3.txt[1.7.10.3],
 -  link:RelNotes/1.7.10.2.txt[1.7.10.2],
 -  link:RelNotes/1.7.10.1.txt[1.7.10.1],
 -  link:RelNotes/1.7.10.txt[1.7.10].
 -
 -* link:v1.7.9.7/git.html[documentation for release 1.7.9.7]
 -
 -* release notes for
 -  link:RelNotes/1.7.9.7.txt[1.7.9.7],
 -  link:RelNotes/1.7.9.6.txt[1.7.9.6],
 -  link:RelNotes/1.7.9.5.txt[1.7.9.5],
 -  link:RelNotes/1.7.9.4.txt[1.7.9.4],
 -  link:RelNotes/1.7.9.3.txt[1.7.9.3],
 -  link:RelNotes/1.7.9.2.txt[1.7.9.2],
 -  link:RelNotes/1.7.9.1.txt[1.7.9.1],
 -  link:RelNotes/1.7.9.txt[1.7.9].
 -
 -* link:v1.7.8.6/git.html[documentation for release 1.7.8.6]
 -
 -* release notes for
 -  link:RelNotes/1.7.8.6.txt[1.7.8.6],
 -  link:RelNotes/1.7.8.5.txt[1.7.8.5],
 -  link:RelNotes/1.7.8.4.txt[1.7.8.4],
 -  link:RelNotes/1.7.8.3.txt[1.7.8.3],
 -  link:RelNotes/1.7.8.2.txt[1.7.8.2],
 -  link:RelNotes/1.7.8.1.txt[1.7.8.1],
 -  link:RelNotes/1.7.8.txt[1.7.8].
 -
 -* link:v1.7.7.7/git.html[documentation for release 1.7.7.7]
 -
 -* release notes for
 -  link:RelNotes/1.7.7.7.txt[1.7.7.7],
 -  link:RelNotes/1.7.7.6.txt[1.7.7.6],
 -  link:RelNotes/1.7.7.5.txt[1.7.7.5],
 -  link:RelNotes/1.7.7.4.txt[1.7.7.4],
 -  link:RelNotes/1.7.7.3.txt[1.7.7.3],
 -  link:RelNotes/1.7.7.2.txt[1.7.7.2],
 -  link:RelNotes/1.7.7.1.txt[1.7.7.1],
 -  link:RelNotes/1.7.7.txt[1.7.7].
 -
 -* link:v1.7.6.6/git.html[documentation for release 1.7.6.6]
 -
 -* release notes for
 -  link:RelNotes/1.7.6.6.txt[1.7.6.6],
 -  link:RelNotes/1.7.6.5.txt[1.7.6.5],
 -  link:RelNotes/1.7.6.4.txt[1.7.6.4],
 -  link:RelNotes/1.7.6.3.txt[1.7.6.3],
 -  link:RelNotes/1.7.6.2.txt[1.7.6.2],
 -  link:RelNotes/1.7.6.1.txt[1.7.6.1],
 -  link:RelNotes/1.7.6.txt[1.7.6].
 -
 -* link:v1.7.5.4/git.html[documentation for release 1.7.5.4]
 -
 -* release notes for
 -  link:RelNotes/1.7.5.4.txt[1.7.5.4],
 -  link:RelNotes/1.7.5.3.txt[1.7.5.3],
 -  link:RelNotes/1.7.5.2.txt[1.7.5.2],
 -  link:RelNotes/1.7.5.1.txt[1.7.5.1],
 -  link:RelNotes/1.7.5.txt[1.7.5].
 -
 -* link:v1.7.4.5/git.html[documentation for release 1.7.4.5]
 -
 -* release notes for
 -  link:RelNotes/1.7.4.5.txt[1.7.4.5],
 -  link:RelNotes/1.7.4.4.txt[1.7.4.4],
 -  link:RelNotes/1.7.4.3.txt[1.7.4.3],
 -  link:RelNotes/1.7.4.2.txt[1.7.4.2],
 -  link:RelNotes/1.7.4.1.txt[1.7.4.1],
 -  link:RelNotes/1.7.4.txt[1.7.4].
 -
 -* link:v1.7.3.5/git.html[documentation for release 1.7.3.5]
 -
 -* release notes for
 -  link:RelNotes/1.7.3.5.txt[1.7.3.5],
 -  link:RelNotes/1.7.3.4.txt[1.7.3.4],
 -  link:RelNotes/1.7.3.3.txt[1.7.3.3],
 -  link:RelNotes/1.7.3.2.txt[1.7.3.2],
 -  link:RelNotes/1.7.3.1.txt[1.7.3.1],
 -  link:RelNotes/1.7.3.txt[1.7.3].
 -
 -* link:v1.7.2.5/git.html[documentation for release 1.7.2.5]
 -
 -* release notes for
 -  link:RelNotes/1.7.2.5.txt[1.7.2.5],
 -  link:RelNotes/1.7.2.4.txt[1.7.2.4],
 -  link:RelNotes/1.7.2.3.txt[1.7.2.3],
 -  link:RelNotes/1.7.2.2.txt[1.7.2.2],
 -  link:RelNotes/1.7.2.1.txt[1.7.2.1],
 -  link:RelNotes/1.7.2.txt[1.7.2].
 -
 -* link:v1.7.1.4/git.html[documentation for release 1.7.1.4]
 -
 -* release notes for
 -  link:RelNotes/1.7.1.4.txt[1.7.1.4],
 -  link:RelNotes/1.7.1.3.txt[1.7.1.3],
 -  link:RelNotes/1.7.1.2.txt[1.7.1.2],
 -  link:RelNotes/1.7.1.1.txt[1.7.1.1],
 -  link:RelNotes/1.7.1.txt[1.7.1].
 -
 -* link:v1.7.0.9/git.html[documentation for release 1.7.0.9]
 -
 -* release notes for
 -  link:RelNotes/1.7.0.9.txt[1.7.0.9],
 -  link:RelNotes/1.7.0.8.txt[1.7.0.8],
 -  link:RelNotes/1.7.0.7.txt[1.7.0.7],
 -  link:RelNotes/1.7.0.6.txt[1.7.0.6],
 -  link:RelNotes/1.7.0.5.txt[1.7.0.5],
 -  link:RelNotes/1.7.0.4.txt[1.7.0.4],
 -  link:RelNotes/1.7.0.3.txt[1.7.0.3],
 -  link:RelNotes/1.7.0.2.txt[1.7.0.2],
 -  link:RelNotes/1.7.0.1.txt[1.7.0.1],
 -  link:RelNotes/1.7.0.txt[1.7.0].
 -
 -* link:v1.6.6.3/git.html[documentation for release 1.6.6.3]
 -
 -* release notes for
 -  link:RelNotes/1.6.6.3.txt[1.6.6.3],
 -  link:RelNotes/1.6.6.2.txt[1.6.6.2],
 -  link:RelNotes/1.6.6.1.txt[1.6.6.1],
 -  link:RelNotes/1.6.6.txt[1.6.6].
 -
 -* link:v1.6.5.9/git.html[documentation for release 1.6.5.9]
 -
 -* release notes for
 -  link:RelNotes/1.6.5.9.txt[1.6.5.9],
 -  link:RelNotes/1.6.5.8.txt[1.6.5.8],
 -  link:RelNotes/1.6.5.7.txt[1.6.5.7],
 -  link:RelNotes/1.6.5.6.txt[1.6.5.6],
 -  link:RelNotes/1.6.5.5.txt[1.6.5.5],
 -  link:RelNotes/1.6.5.4.txt[1.6.5.4],
 -  link:RelNotes/1.6.5.3.txt[1.6.5.3],
 -  link:RelNotes/1.6.5.2.txt[1.6.5.2],
 -  link:RelNotes/1.6.5.1.txt[1.6.5.1],
 -  link:RelNotes/1.6.5.txt[1.6.5].
 -
 -* link:v1.6.4.5/git.html[documentation for release 1.6.4.5]
 -
 -* release notes for
 -  link:RelNotes/1.6.4.5.txt[1.6.4.5],
 -  link:RelNotes/1.6.4.4.txt[1.6.4.4],
 -  link:RelNotes/1.6.4.3.txt[1.6.4.3],
 -  link:RelNotes/1.6.4.2.txt[1.6.4.2],
 -  link:RelNotes/1.6.4.1.txt[1.6.4.1],
 -  link:RelNotes/1.6.4.txt[1.6.4].
 -
 -* link:v1.6.3.4/git.html[documentation for release 1.6.3.4]
 -
 -* release notes for
 -  link:RelNotes/1.6.3.4.txt[1.6.3.4],
 -  link:RelNotes/1.6.3.3.txt[1.6.3.3],
 -  link:RelNotes/1.6.3.2.txt[1.6.3.2],
 -  link:RelNotes/1.6.3.1.txt[1.6.3.1],
 -  link:RelNotes/1.6.3.txt[1.6.3].
 -
 -* release notes for
 -  link:RelNotes/1.6.2.5.txt[1.6.2.5],
 -  link:RelNotes/1.6.2.4.txt[1.6.2.4],
 -  link:RelNotes/1.6.2.3.txt[1.6.2.3],
 -  link:RelNotes/1.6.2.2.txt[1.6.2.2],
 -  link:RelNotes/1.6.2.1.txt[1.6.2.1],
 -  link:RelNotes/1.6.2.txt[1.6.2].
 -
 -* link:v1.6.1.3/git.html[documentation for release 1.6.1.3]
 -
 -* release notes for
 -  link:RelNotes/1.6.1.3.txt[1.6.1.3],
 -  link:RelNotes/1.6.1.2.txt[1.6.1.2],
 -  link:RelNotes/1.6.1.1.txt[1.6.1.1],
 -  link:RelNotes/1.6.1.txt[1.6.1].
 -
 -* link:v1.6.0.6/git.html[documentation for release 1.6.0.6]
 -
 -* release notes for
 -  link:RelNotes/1.6.0.6.txt[1.6.0.6],
 -  link:RelNotes/1.6.0.5.txt[1.6.0.5],
 -  link:RelNotes/1.6.0.4.txt[1.6.0.4],
 -  link:RelNotes/1.6.0.3.txt[1.6.0.3],
 -  link:RelNotes/1.6.0.2.txt[1.6.0.2],
 -  link:RelNotes/1.6.0.1.txt[1.6.0.1],
 -  link:RelNotes/1.6.0.txt[1.6.0].
 -
 -* link:v1.5.6.6/git.html[documentation for release 1.5.6.6]
 -
 -* release notes for
 -  link:RelNotes/1.5.6.6.txt[1.5.6.6],
 -  link:RelNotes/1.5.6.5.txt[1.5.6.5],
 -  link:RelNotes/1.5.6.4.txt[1.5.6.4],
 -  link:RelNotes/1.5.6.3.txt[1.5.6.3],
 -  link:RelNotes/1.5.6.2.txt[1.5.6.2],
 -  link:RelNotes/1.5.6.1.txt[1.5.6.1],
 -  link:RelNotes/1.5.6.txt[1.5.6].
 -
 -* link:v1.5.5.6/git.html[documentation for release 1.5.5.6]
 -
 -* release notes for
 -  link:RelNotes/1.5.5.6.txt[1.5.5.6],
 -  link:RelNotes/1.5.5.5.txt[1.5.5.5],
 -  link:RelNotes/1.5.5.4.txt[1.5.5.4],
 -  link:RelNotes/1.5.5.3.txt[1.5.5.3],
 -  link:RelNotes/1.5.5.2.txt[1.5.5.2],
 -  link:RelNotes/1.5.5.1.txt[1.5.5.1],
 -  link:RelNotes/1.5.5.txt[1.5.5].
 -
 -* link:v1.5.4.7/git.html[documentation for release 1.5.4.7]
 -
 -* release notes for
 -  link:RelNotes/1.5.4.7.txt[1.5.4.7],
 -  link:RelNotes/1.5.4.6.txt[1.5.4.6],
 -  link:RelNotes/1.5.4.5.txt[1.5.4.5],
 -  link:RelNotes/1.5.4.4.txt[1.5.4.4],
 -  link:RelNotes/1.5.4.3.txt[1.5.4.3],
 -  link:RelNotes/1.5.4.2.txt[1.5.4.2],
 -  link:RelNotes/1.5.4.1.txt[1.5.4.1],
 -  link:RelNotes/1.5.4.txt[1.5.4].
 -
 -* link:v1.5.3.8/git.html[documentation for release 1.5.3.8]
 -
 -* release notes for
 -  link:RelNotes/1.5.3.8.txt[1.5.3.8],
 -  link:RelNotes/1.5.3.7.txt[1.5.3.7],
 -  link:RelNotes/1.5.3.6.txt[1.5.3.6],
 -  link:RelNotes/1.5.3.5.txt[1.5.3.5],
 -  link:RelNotes/1.5.3.4.txt[1.5.3.4],
 -  link:RelNotes/1.5.3.3.txt[1.5.3.3],
 -  link:RelNotes/1.5.3.2.txt[1.5.3.2],
 -  link:RelNotes/1.5.3.1.txt[1.5.3.1],
 -  link:RelNotes/1.5.3.txt[1.5.3].
 -
 -* link:v1.5.2.5/git.html[documentation for release 1.5.2.5]
 -
 -* release notes for
 -  link:RelNotes/1.5.2.5.txt[1.5.2.5],
 -  link:RelNotes/1.5.2.4.txt[1.5.2.4],
 -  link:RelNotes/1.5.2.3.txt[1.5.2.3],
 -  link:RelNotes/1.5.2.2.txt[1.5.2.2],
 -  link:RelNotes/1.5.2.1.txt[1.5.2.1],
 -  link:RelNotes/1.5.2.txt[1.5.2].
 -
 -* link:v1.5.1.6/git.html[documentation for release 1.5.1.6]
 -
 -* release notes for
 -  link:RelNotes/1.5.1.6.txt[1.5.1.6],
 -  link:RelNotes/1.5.1.5.txt[1.5.1.5],
 -  link:RelNotes/1.5.1.4.txt[1.5.1.4],
 -  link:RelNotes/1.5.1.3.txt[1.5.1.3],
 -  link:RelNotes/1.5.1.2.txt[1.5.1.2],
 -  link:RelNotes/1.5.1.1.txt[1.5.1.1],
 -  link:RelNotes/1.5.1.txt[1.5.1].
 -
 -* link:v1.5.0.7/git.html[documentation for release 1.5.0.7]
 -
 -* release notes for
 -  link:RelNotes/1.5.0.7.txt[1.5.0.7],
 -  link:RelNotes/1.5.0.6.txt[1.5.0.6],
 -  link:RelNotes/1.5.0.5.txt[1.5.0.5],
 -  link:RelNotes/1.5.0.3.txt[1.5.0.3],
 -  link:RelNotes/1.5.0.2.txt[1.5.0.2],
 -  link:RelNotes/1.5.0.1.txt[1.5.0.1],
 -  link:RelNotes/1.5.0.txt[1.5.0].
 -
 -* documentation for release link:v1.4.4.4/git.html[1.4.4.4],
 -  link:v1.3.3/git.html[1.3.3],
 -  link:v1.2.6/git.html[1.2.6],
 -  link:v1.0.13/git.html[1.0.13].
 -
 -============
 -
 -endif::stalenotes[]
  
  OPTIONS
  -------
@@@ -75,7 -571,8 +75,8 @@@ example the following invocations are e
  Note that omitting the `=` in `git -c foo.bar ...` is allowed and sets
  `foo.bar` to the boolean true value (just like `[foo]bar` would in a
  config file). Including the equals but with an empty value (like `git -c
- foo.bar= ...`) sets `foo.bar` to the empty string.
+ foo.bar= ...`) sets `foo.bar` to the empty string which ` git config
+ --bool` will convert to `false`.
  
  --exec-path[=<path>]::
        Path to wherever your core Git programs are installed.
@@@ -533,12 -1030,6 +534,12 @@@ Usually it is easier to configure any d
  personal `.ssh/config` file.  Please consult your ssh documentation
  for further details.
  
 +`GIT_SSH_VARIANT`::
 +      If this environment variable is set, it overrides Git's autodetection
 +      whether `GIT_SSH`/`GIT_SSH_COMMAND`/`core.sshCommand` refer to OpenSSH,
 +      plink or tortoiseplink. This variable overrides the config setting
 +      `ssh.variant` that serves the same purpose.
 +
  `GIT_ASKPASS`::
        If this environment variable is set, then Git commands which need to
        acquire passwords or passphrases (e.g. for HTTP or IMAP authentication)
@@@ -681,20 -1172,30 +682,20 @@@ of clones and fetches
        cloning a repository to make a backup).
  
  `GIT_ALLOW_PROTOCOL`::
 -      If set, provide a colon-separated list of protocols which are
 -      allowed to be used with fetch/push/clone. This is useful to
 -      restrict recursive submodule initialization from an untrusted
 -      repository. Any protocol not mentioned will be disallowed (i.e.,
 -      this is a whitelist, not a blacklist). If the variable is not
 -      set at all, all protocols are enabled.  The protocol names
 -      currently used by git are:
 -
 -        - `file`: any local file-based path (including `file://` URLs,
 -          or local paths)
 -
 -        - `git`: the anonymous git protocol over a direct TCP
 -          connection (or proxy, if configured)
 -
 -        - `ssh`: git over ssh (including `host:path` syntax,
 -          `ssh://`, etc).
 -
 -        - `http`: git over http, both "smart http" and "dumb http".
 -          Note that this does _not_ include `https`; if you want both,
 -          you should specify both as `http:https`.
 -
 -        - any external helpers are named by their protocol (e.g., use
 -          `hg` to allow the `git-remote-hg` helper)
 -
 +      If set to a colon-separated list of protocols, behave as if
 +      `protocol.allow` is set to `never`, and each of the listed
 +      protocols has `protocol.<name>.allow` set to `always`
 +      (overriding any existing configuration). In other words, any
 +      protocol not mentioned will be disallowed (i.e., this is a
 +      whitelist, not a blacklist). See the description of
 +      `protocol.allow` in linkgit:git-config[1] for more details.
 +
 +`GIT_PROTOCOL_FROM_USER`::
 +      Set to 0 to prevent protocols used by fetch/push/clone which are
 +      configured to the `user` state.  This is useful to restrict recursive
 +      submodule initialization from an untrusted repository or for programs
 +      which feed potentially-untrusted URLS to git commands.  See
 +      linkgit:git-config[1] for more details.
  
  Discussion[[Discussion]]
  ------------------------