Merge branch 'dt/name-hash-dir-entry-fix' into maint
[gitweb.git] / Documentation / git.txt
index 577d634491b5706d7513a1fc84cedde199e037eb..4585103f996c0e68753520ad5064a1a9879054c8 100644 (file)
@@ -43,6 +43,52 @@ 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.6.2/git.html[documentation for release 2.6.2]
+
+* release notes for
+  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.4/git.html[documentation for release 2.5.4]
+
+* release notes for
+  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.10/git.html[documentation for release 2.4.10]
+
+* release notes for
+  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
@@ -751,7 +797,7 @@ The Git Repository
 ~~~~~~~~~~~~~~~~~~
 These environment variables apply to 'all' core Git commands. Nb: it
 is worth noting that they may be used/overridden by SCMS sitting above
-Git so take care if using Cogito etc.
+Git so take care if using a foreign front-end.
 
 'GIT_INDEX_FILE'::
        This environment allows the specification of an alternate
@@ -761,7 +807,8 @@ Git so take care if using Cogito etc.
 'GIT_INDEX_VERSION'::
        This environment variable allows the specification of an index
        version for new repositories.  It won't affect existing index
-       files.  By default index file version [23] is used.
+       files.  By default index file version 2 or 3 is used. See
+       linkgit:git-update-index[1] for more information.
 
 'GIT_OBJECT_DIRECTORY'::
        If the object storage directory is specified via this
@@ -816,6 +863,15 @@ Git so take care if using Cogito etc.
        an explicit repository directory set via 'GIT_DIR' or on the
        command line.
 
+'GIT_COMMON_DIR'::
+       If this variable is set to a path, non-worktree files that are
+       normally in $GIT_DIR will be taken from this path
+       instead. Worktree-specific files such as HEAD or index are
+       taken from $GIT_DIR. See linkgit:gitrepository-layout[5] and
+       linkgit:git-worktree[1] for
+       details. This variable has lower precedence than other path
+       variables such as GIT_INDEX_FILE, GIT_OBJECT_DIRECTORY...
+
 Git Commits
 ~~~~~~~~~~~
 'GIT_AUTHOR_NAME'::
@@ -888,19 +944,21 @@ other
        and the `core.editor` option in linkgit:git-config[1].
 
 'GIT_SSH'::
-       If this environment variable is set then 'git fetch'
-       and 'git push' will use this command instead
-       of 'ssh' when they need to connect to a remote system.
-       The '$GIT_SSH' command will be given exactly two or
-       four arguments: the 'username@host' (or just 'host')
-       from the URL and the shell command to execute on that
-       remote system, optionally preceded by '-p' (literally) and
-       the 'port' from the URL when it specifies something other
-       than the default SSH port.
+'GIT_SSH_COMMAND'::
+       If either of these environment variables is set then 'git fetch'
+       and 'git push' will use the specified command instead of 'ssh'
+       when they need to connect to a remote system.
+       The command will be given exactly two or four arguments: the
+       'username@host' (or just 'host') from the URL and the shell
+       command to execute on that remote system, optionally preceded by
+       '-p' (literally) and the 'port' from the URL when it specifies
+       something other than the default SSH port.
 +
-To pass options to the program that you want to list in GIT_SSH
-you will need to wrap the program and options into a shell script,
-then set GIT_SSH to refer to the shell script.
+`$GIT_SSH_COMMAND` takes precedence over `$GIT_SSH`, and is interpreted
+by the shell, which allows additional arguments to be included.
+`$GIT_SSH` on the other hand must be just the path to a program
+(which can be a wrapper shell script, if additional arguments are
+needed).
 +
 Usually it is easier to configure any desired options through your
 personal `.ssh/config` file.  Please consult your ssh documentation
@@ -910,9 +968,13 @@ for further details.
        If this environment variable is set, then Git commands which need to
        acquire passwords or passphrases (e.g. for HTTP or IMAP authentication)
        will call this program with a suitable prompt as command-line argument
-       and read the password from its STDOUT. See also the 'core.askpass'
+       and read the password from its STDOUT. See also the 'core.askPass'
        option in linkgit:git-config[1].
 
+'GIT_TERMINAL_PROMPT'::
+       If this environment variable is set to `0`, git will not prompt
+       on the terminal (e.g., when asking for HTTP authentication).
+
 'GIT_CONFIG_NOSYSTEM'::
        Whether to skip reading settings from the system-wide
        `$(prefix)/etc/gitconfig` file.  This environment variable can
@@ -964,9 +1026,20 @@ Unsetting the variable, or setting it to empty, "0" or
        Enables trace messages for all packets coming in or out of a
        given program. This can help with debugging object negotiation
        or other protocol issues. Tracing is turned off at a packet
-       starting with "PACK".
+       starting with "PACK" (but see 'GIT_TRACE_PACKFILE' below).
        See 'GIT_TRACE' for available trace output options.
 
+'GIT_TRACE_PACKFILE'::
+       Enables tracing of packfiles sent or received by a
+       given program. Unlike other trace output, this trace is
+       verbatim: no headers, and no quoting of binary data. You almost
+       certainly want to direct into a file (e.g.,
+       `GIT_TRACE_PACKFILE=/tmp/my.pack`) rather than displaying it on
+       the terminal or mixing it with other trace output.
++
+Note that this is currently only implemented for the client side
+of clones and fetches.
+
 'GIT_TRACE_PERFORMANCE'::
        Enables performance related trace messages, e.g. total execution
        time of each Git command.
@@ -1013,6 +1086,44 @@ GIT_ICASE_PATHSPECS::
        variable when it is invoked as the top level command by the
        end user, to be recorded in the body of the reflog.
 
+`GIT_REF_PARANOIA`::
+       If set to `1`, include broken or badly named refs when iterating
+       over lists of refs. In a normal, non-corrupted repository, this
+       does nothing. However, enabling it may help git to detect and
+       abort some operations in the presence of broken refs. Git sets
+       this variable automatically when performing destructive
+       operations like linkgit:git-prune[1]. You should not need to set
+       it yourself unless you want to be paranoid about making sure
+       an operation has touched every ref (e.g., because you are
+       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,
+           `git+ssh://`, etc).
+
+         - `rsync`: git over rsync
+
+         - `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)
+
 
 Discussion[[Discussion]]
 ------------------------