Merge branch 'ls/travis-enable-httpd-tests'
[gitweb.git] / Documentation / config.txt
index b50110ab39a2d7dae50f8bb5f722d2668a41140a..8b1aee4b3bbb57e95fd660b57d589742dcd211b3 100644 (file)
@@ -140,7 +140,7 @@ boolean::
        false;; Boolean false can be spelled as `no`, `off`,
                `false`, or `0`.
 +
-When converting value to the canonical form using '--bool' type
+When converting value to the canonical form using `--bool` type
 specifier; 'git config' will ensure that the output is "true" or
 "false" (spelled in lowercase).
 
@@ -150,27 +150,34 @@ integer::
        1024", "by 1024x1024", etc.
 
 color::
-       The value for a variables that takes a color is a list of
-       colors (at most two) and attributes (at most one), separated
-       by spaces.  The colors accepted are `normal`, `black`,
-       `red`, `green`, `yellow`, `blue`, `magenta`, `cyan` and
-       `white`; the attributes are `bold`, `dim`, `ul`, `blink` and
-       `reverse`.  The first color given is the foreground; the
-       second is the background.  The position of the attribute, if
-       any, doesn't matter. Attributes may be turned off specifically
-       by prefixing them with `no` (e.g., `noreverse`, `noul`, etc).
-+
-Colors (foreground and background) may also be given as numbers between
-0 and 255; these use ANSI 256-color mode (but note that not all
-terminals may support this).  If your terminal supports it, you may also
-specify 24-bit RGB values as hex, like `#ff0ab3`.
-+
-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 plain `black`, even if the previous
-thing on the same output line (e.g. opening parenthesis before the
-list of branch names in `log --decorate` output) is set to be
-painted with `bold` or some other attribute.
+       The value for a variable that takes a color is a list of
+       colors (at most two, one for foreground and one for background)
+       and attributes (as many as you want), separated by spaces.
++
+The basic colors accepted are `normal`, `black`, `red`, `green`, `yellow`,
+`blue`, `magenta`, `cyan` and `white`.  The first color given is the
+foreground; the second is the background.
++
+Colors may also be given as numbers between 0 and 255; these use ANSI
+256-color mode (but note that not all terminals may support this).  If
+your terminal supports it, you may also specify 24-bit RGB values as
+hex, like `#ff0ab3`.
++
+The accepted attributes are `bold`, `dim`, `ul`, `blink`, `reverse`,
+`italic`, and `strike` (for crossed-out or "strikethrough" letters).
+The position of any attributes with respect to the colors
+(before, after, or in between), doesn't matter. Specific attributes may
+be turned off by prefixing them with `no` or `no-` (e.g., `noreverse`,
+`no-ul`, etc).
++
+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
+plain `black`, even if the previous thing on the same output line (e.g.
+opening parenthesis before the list of branch names in `log --decorate`
+output) is set to be painted with `bold` or some other attribute.
+However, custom log formats may do more complicated and layered
+coloring, and the negated forms may be useful there.
 
 pathname::
        A variable that takes a pathname value can be given a
@@ -405,13 +412,11 @@ file with mixed line endings would be reported by the `core.safecrlf`
 mechanism.
 
 core.autocrlf::
-       Setting this variable to "true" is almost the same as setting
-       the `text` attribute to "auto" on all files except that text
-       files are not guaranteed to be normalized: files that contain
-       `CRLF` in the repository will not be touched.  Use this
-       setting if you want to have `CRLF` line endings in your
-       working directory even though the repository does not have
-       normalized line endings.  This variable can be set to 'input',
+       Setting this variable to "true" is the same as setting
+       the `text` attribute to "auto" on all files and core.eol to "crlf".
+       Set to true if you want to have `CRLF` line endings in your
+       working directory and the repository has LF line endings.
+       This variable can be set to 'input',
        in which case no output conversion is performed.
 
 core.symlinks::
@@ -443,6 +448,13 @@ specify that no proxy be used for a given domain pattern.
 This is useful for excluding servers inside a firewall from
 proxy use, while defaulting to a common proxy for external domains.
 
+core.sshCommand::
+       If this variable is set, `git fetch` and `git push` will
+       use the specified command instead of `ssh` when they need to
+       connect to a remote system. The command is in the same form as
+       the `GIT_SSH_COMMAND` environment variable and is overridden
+       when the environment variable is set.
+
 core.ignoreStat::
        If true, Git will avoid using lstat() calls to detect if files have
        changed by setting the "assume-unchanged" bit for those tracked files
@@ -478,10 +490,10 @@ false), while all other repositories are assumed to be bare (bare
 
 core.worktree::
        Set the path to the root of the working tree.
-       If GIT_COMMON_DIR environment variable is set, core.worktree
+       If `GIT_COMMON_DIR` environment variable is set, core.worktree
        is ignored and not used for determining the root of working tree.
-       This can be overridden by the GIT_WORK_TREE environment
-       variable and the '--work-tree' command-line option.
+       This can be overridden by the `GIT_WORK_TREE` environment
+       variable and the `--work-tree` command-line option.
        The value can be an absolute path or relative to the path to
        the .git directory, which is either specified by --git-dir
        or GIT_DIR, or automatically discovered.
@@ -545,7 +557,7 @@ core.compression::
        -1 is the zlib default. 0 means no compression,
        and 1..9 are various speed/size tradeoffs, 9 being slowest.
        If set, this provides a default to other compression variables,
-       such as 'core.looseCompression' and 'pack.compression'.
+       such as `core.looseCompression` and `pack.compression`.
 
 core.looseCompression::
        An integer -1..9, indicating the compression level for objects that
@@ -621,7 +633,7 @@ core.askPass::
        ask for a password can be told to use an external program given
        via the value of this variable. Can be overridden by the `GIT_ASKPASS`
        environment variable. If not set, fall back to the value of the
-       'SSH_ASKPASS' environment variable or, failing that, a simple password
+       `SSH_ASKPASS` environment variable or, failing that, a simple password
        prompt. The external program shall be given a suitable prompt as
        command-line argument and write the password on its STDOUT.
 
@@ -633,6 +645,23 @@ core.attributesFile::
        `$XDG_CONFIG_HOME/git/attributes`. If `$XDG_CONFIG_HOME` is either not
        set or empty, `$HOME/.config/git/attributes` is used instead.
 
+core.hooksPath::
+       By default Git will look for your hooks in the
+       '$GIT_DIR/hooks' directory. Set this to different path,
+       e.g. '/etc/git/hooks', and Git will try to find your hooks in
+       that directory, e.g. '/etc/git/hooks/pre-receive' instead of
+       in '$GIT_DIR/hooks/pre-receive'.
++
+The path can be either absolute or relative. A relative path is
+taken as relative to the directory where the hooks are run (see
+the "DESCRIPTION" section of linkgit:githooks[5]).
++
+This configuration variable is useful in cases where you'd like to
+centrally configure your Git hooks instead of configuring them on a
+per-repository basis, or as a more flexible and centralized
+alternative to having an `init.templateDir` where you've changed
+default hooks.
+
 core.editor::
        Commands such as `commit` and `tag` that lets you edit
        messages by launching an editor uses the value of this
@@ -762,7 +791,7 @@ core.abbrev::
 add.ignoreErrors::
 add.ignore-errors (deprecated)::
        Tells 'git add' to continue adding files when some files cannot be
-       added due to indexing errors. Equivalent to the '--ignore-errors'
+       added due to indexing errors. Equivalent to the `--ignore-errors`
        option of linkgit:git-add[1].  `add.ignore-errors` is deprecated,
        as it does not follow the usual naming convention for configuration
        variables.
@@ -788,9 +817,9 @@ from the original current directory. See linkgit:git-rev-parse[1].
 
 am.keepcr::
        If true, git-am will call git-mailsplit for patches in mbox format
-       with parameter '--keep-cr'. In this case git-mailsplit will
+       with parameter `--keep-cr`. In this case git-mailsplit will
        not remove `\r` from lines ending with `\r\n`. Can be overridden
-       by giving '--no-keep-cr' from the command line.
+       by giving `--no-keep-cr` from the command line.
        See linkgit:git-am[1], linkgit:git-mailsplit[1].
 
 am.threeWay::
@@ -803,7 +832,7 @@ am.threeWay::
 
 apply.ignoreWhitespace::
        When set to 'change', tells 'git apply' to ignore changes in
-       whitespace, in the same way as the '--ignore-space-change'
+       whitespace, in the same way as the `--ignore-space-change`
        option.
        When set to one of: no, none, never, false tells 'git apply' to
        respect all whitespace differences.
@@ -811,7 +840,7 @@ apply.ignoreWhitespace::
 
 apply.whitespace::
        Tells 'git apply' how to handle whitespaces, in the same way
-       as the '--whitespace' option. See linkgit:git-apply[1].
+       as the `--whitespace` option. See linkgit:git-apply[1].
 
 branch.autoSetupMerge::
        Tells 'git branch' and 'git checkout' to set up new branches
@@ -913,7 +942,7 @@ browser.<tool>.cmd::
 
 browser.<tool>.path::
        Override the path for the given tool that may be used to
-       browse HTML help (see '-w' option in linkgit:git-help[1]) or a
+       browse HTML help (see `-w` option in linkgit:git-help[1]) or a
        working repository in gitweb (see linkgit:git-instaweb[1]).
 
 clean.requireForce::
@@ -1124,11 +1153,16 @@ commit.template::
        Specify the pathname of a file to use as the template for
        new commit messages.
 
+commit.verbose::
+       A boolean or int to specify the level of verbose with `git commit`.
+       See linkgit:git-commit[1].
+
 credential.helper::
        Specify an external helper to be called when a username or
        password credential is needed; the helper may consult external
-       storage to avoid prompting the user for the credentials. See
-       linkgit:gitcredentials[7] for details.
+       storage to avoid prompting the user for the credentials. Note
+       that multiple helpers may be defined. See linkgit:gitcredentials[7]
+       for details.
 
 credential.useHttpPath::
        When acquiring credentials, consider the "path" component of an http
@@ -1167,6 +1201,15 @@ difftool.<tool>.cmd::
 difftool.prompt::
        Prompt before each invocation of the diff tool.
 
+fastimport.unpackLimit::
+       If the number of objects imported by linkgit:git-fast-import[1]
+       is below this limit, then the objects will be unpacked into
+       loose object files.  However if the number of imported objects
+       equals or exceeds this limit then the pack will be stored as a
+       pack.  Storing the pack from a fast-import can make the import
+       operation complete faster, especially on slow filesystems.  If
+       not set, the value of `transfer.unpackLimit` is used instead.
+
 fetch.recurseSubmodules::
        This option can be either set to a boolean value or to 'on-demand'.
        Setting it to a boolean changes the behavior of fetch and pull to
@@ -1198,6 +1241,11 @@ fetch.prune::
        If true, fetch will automatically behave as if the `--prune`
        option was given on the command line.  See also `remote.<name>.prune`.
 
+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.
+
 format.attach::
        Enable multipart/mixed attachments as the default for
        'format-patch'.  The value can also be a double quoted string
@@ -1272,6 +1320,10 @@ format.outputDirectory::
        Set a custom directory to store the resulting files instead of the
        current working directory.
 
+format.useAutoBase::
+       A boolean value which lets you enable the `--base=auto` option of
+       format-patch by default.
+
 filter.<driver>.clean::
        The command which is used to convert the content of a worktree
        file to a blob upon checkin.  See linkgit:gitattributes[5] for
@@ -1394,24 +1446,24 @@ gitcvs.logFile::
 
 gitcvs.usecrlfattr::
        If true, the server will look up the end-of-line conversion
-       attributes for files to determine the '-k' modes to use. If
+       attributes for files to determine the `-k` modes to use. If
        the attributes force Git to treat a file as text,
-       the '-k' mode will be left blank so CVS clients will
+       the `-k` mode will be left blank so CVS clients will
        treat it as text. If they suppress text conversion, the file
        will be set with '-kb' mode, which suppresses any newline munging
        the client might otherwise do. If the attributes do not allow
-       the file type to be determined, then 'gitcvs.allBinary' is
+       the file type to be determined, then `gitcvs.allBinary` is
        used. See linkgit:gitattributes[5].
 
 gitcvs.allBinary::
-       This is used if 'gitcvs.usecrlfattr' does not resolve
+       This is used if `gitcvs.usecrlfattr` does not resolve
        the correct '-kb' mode to use. If true, all
        unresolved files are sent to the client in
        mode '-kb'. This causes the client to treat them
        as binary files, which suppresses any newline munging it
        otherwise might do. Alternatively, if it is set to "guess",
        then the contents of the file are examined to decide if
-       it is binary, similar to 'core.autocrlf'.
+       it is binary, similar to `core.autocrlf`.
 
 gitcvs.dbName::
        Database used by git-cvsserver to cache revision information
@@ -1430,7 +1482,7 @@ gitcvs.dbDriver::
        See linkgit:git-cvsserver[1].
 
 gitcvs.dbUser, gitcvs.dbPass::
-       Database user and password. Only useful if setting 'gitcvs.dbDriver',
+       Database user and password. Only useful if setting `gitcvs.dbDriver`,
        since SQLite has no concept of database users and/or passwords.
        'gitcvs.dbUser' supports variable substitution (see
        linkgit:git-cvsserver[1] for details).
@@ -1442,8 +1494,8 @@ gitcvs.dbTableNamePrefix::
        linkgit:git-cvsserver[1] for details).  Any non-alphabetic
        characters will be replaced with underscores.
 
-All gitcvs variables except for 'gitcvs.usecrlfattr' and
-'gitcvs.allBinary' can also be specified as
+All gitcvs variables except for `gitcvs.usecrlfattr` and
+`gitcvs.allBinary` can also be specified as
 'gitcvs.<access_method>.<varname>' (where 'access_method'
 is one of "ext" and "pserver") to make them apply only for the given
 access method.
@@ -1466,17 +1518,17 @@ gitweb.snapshot::
        See linkgit:gitweb.conf[5] for description.
 
 grep.lineNumber::
-       If set to true, enable '-n' option by default.
+       If set to true, enable `-n` option by default.
 
 grep.patternType::
        Set the default matching behavior. Using a value of 'basic', 'extended',
-       'fixed', or 'perl' will enable the '--basic-regexp', '--extended-regexp',
-       '--fixed-strings', or '--perl-regexp' option accordingly, while the
+       'fixed', or 'perl' will enable the `--basic-regexp`, `--extended-regexp`,
+       `--fixed-strings`, or `--perl-regexp` option accordingly, while the
        value 'default' will return to the default matching behavior.
 
 grep.extendedRegexp::
-       If set to true, enable '--extended-regexp' option by default. This
-       option is ignored when the 'grep.patternType' option is set to a value
+       If set to true, enable `--extended-regexp` option by default. This
+       option is ignored when the `grep.patternType` option is set to a value
        other than 'default'.
 
 grep.threads::
@@ -1582,7 +1634,7 @@ guitool.<name>.confirm::
 
 guitool.<name>.argPrompt::
        Request a string argument from the user, and pass it to the tool
-       through the 'ARGS' environment variable. Since requesting an
+       through the `ARGS` environment variable. Since requesting an
        argument implies confirmation, the 'confirm' option has no effect
        if this is enabled. If the option is set to 'true', 'yes', or '1',
        the dialog uses a built-in generic prompt; otherwise the exact
@@ -1590,7 +1642,7 @@ guitool.<name>.argPrompt::
 
 guitool.<name>.revPrompt::
        Request a single valid revision from the user, and set the
-       'REVISION' environment variable. In other aspects this option
+       `REVISION` environment variable. In other aspects this option
        is similar to 'argPrompt', and can be used together with it.
 
 guitool.<name>.revUnmerged::
@@ -1668,6 +1720,12 @@ http.emptyAuth::
        a username in the URL, as libcurl normally requires a username for
        authentication.
 
+http.extraHeader::
+       Pass an additional HTTP header when communicating with a server.  If
+       more than one such entry exists, all of them are added as extra
+       headers.  To allow overriding the settings inherited from the system
+       config, an empty value will reset the extra headers to the empty list.
+
 http.cookieFile::
        The pathname of a file containing previously stored cookie lines,
        which should be used
@@ -1901,6 +1959,14 @@ interactive.singleKey::
        setting is silently ignored if portable keystroke input
        is not available; requires the Perl module Term::ReadKey.
 
+interactive.diffFilter::
+       When an interactive command (such as `git add --patch`) shows
+       a colorized diff, git will pipe the diff through the shell
+       command defined by this configuration variable. The command may
+       mark up the diff further for human consumption, provided that it
+       retains a one-to-one correspondence with the lines in the
+       original diff. Defaults to disabled (no filtering).
+
 log.abbrevCommit::
        If true, makes linkgit:git-log[1], linkgit:git-show[1], and
        linkgit:git-whatchanged[1] assume `--abbrev-commit`. You may
@@ -1916,7 +1982,10 @@ log.decorate::
        command. If 'short' is specified, the ref name prefixes 'refs/heads/',
        'refs/tags/' and 'refs/remotes/' will not be printed. If 'full' is
        specified, the full ref name (including prefix) will be printed.
-       This is the same as the log commands '--decorate' option.
+       If 'auto' is specified, then if the output is going to a terminal,
+       the ref names are shown as if 'short' were given, otherwise no ref
+       names are shown. This is the same as the `--decorate` option
+       of the `git log`.
 
 log.follow::
        If `true`, `git log` will act as if the `--follow` option was used when
@@ -2298,16 +2367,16 @@ new default).
 --
 
 push.followTags::
-       If set to true enable '--follow-tags' option by default.  You
+       If set to true enable `--follow-tags` option by default.  You
        may override this configuration at time of push by specifying
-       '--no-follow-tags'.
+       `--no-follow-tags`.
 
 push.gpgSign::
        May be set to a boolean value, or the string 'if-asked'. A true
-       value causes all pushes to be GPG signed, as if '--signed' is
+       value causes all pushes to be GPG signed, as if `--signed` is
        passed to linkgit:git-push[1]. The string 'if-asked' causes
        pushes to be signed if the server supports it, as if
-       '--signed=if-asked' is passed to 'git push'. A false value may
+       `--signed=if-asked` is passed to 'git push'. A false value may
        override a value from a lower-priority config file. An explicit
        command-line flag always overrides this config option.
 
@@ -2330,7 +2399,7 @@ rebase.stat::
        rebase. False by default.
 
 rebase.autoSquash::
-       If set to true enable '--autosquash' option by default.
+       If set to true enable `--autosquash` option by default.
 
 rebase.autoStash::
        When set to true, automatically create a temporary stash
@@ -2587,7 +2656,7 @@ sendemail.identity::
        A configuration identity. When given, causes values in the
        'sendemail.<identity>' subsection to take precedence over
        values in the 'sendemail' section. The default identity is
-       the value of 'sendemail.identity'.
+       the value of `sendemail.identity`.
 
 sendemail.smtpEncryption::
        See linkgit:git-send-email[1] for description.  Note that this
@@ -2604,7 +2673,7 @@ sendemail.<identity>.*::
        Identity-specific versions of the 'sendemail.*' parameters
        found below, taking precedence over those when the this
        identity is selected, through command-line or
-       'sendemail.identity'.
+       `sendemail.identity`.
 
 sendemail.aliasesFile::
 sendemail.aliasFileType::
@@ -2634,7 +2703,7 @@ sendemail.xmailer::
        See linkgit:git-send-email[1] for description.
 
 sendemail.signedoffcc (deprecated)::
-       Deprecated alias for 'sendemail.signedoffbycc'.
+       Deprecated alias for `sendemail.signedoffbycc`.
 
 showbranch.default::
        The default set of branches for linkgit:git-show-branch[1].
@@ -2748,6 +2817,17 @@ submodule.<name>.ignore::
        "--ignore-submodules" option. The 'git submodule' commands are not
        affected by this setting.
 
+submodule.fetchJobs::
+       Specifies how many submodules are fetched/cloned at the same time.
+       A positive integer allows up to that number of submodules fetched
+       in parallel. A value of 0 will give some reasonable default.
+       If unset, it defaults to 1.
+
+tag.forceSignAnnotated::
+       A boolean to specify whether annotated tags created should be GPG signed.
+       If `--annotate` is specified on the command line, it takes
+       precedence over this option.
+
 tag.sort::
        This variable controls the sort ordering of tags when displayed by
        linkgit:git-tag[1]. Without the "--sort=<value>" option provided, the
@@ -2829,6 +2909,21 @@ uploadpack.keepAlive::
        `uploadpack.keepAlive` seconds. Setting this option to 0
        disables keepalive packets entirely. The default is 5 seconds.
 
+uploadpack.packObjectsHook::
+       If this option is set, when `upload-pack` would run
+       `git pack-objects` to create a packfile for a client, it will
+       run this shell command instead.  The `pack-objects` command and
+       arguments it _would_ have run (including the `git pack-objects`
+       at the beginning) are appended to the shell command. The stdin
+       and stdout of the hook are treated as if `pack-objects` itself
+       was run. I.e., `upload-pack` will feed input intended for
+       `pack-objects` to the hook, and expects a completed packfile on
+       stdout.
++
+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).
+
 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
@@ -2856,7 +2951,7 @@ url.<base>.pushInsteadOf::
 user.email::
        Your email address to be recorded in any newly created commits.
        Can be overridden by the `GIT_AUTHOR_EMAIL`, `GIT_COMMITTER_EMAIL`, and
-       'EMAIL' environment variables.  See linkgit:git-commit-tree[1].
+       `EMAIL` environment variables.  See linkgit:git-commit-tree[1].
 
 user.name::
        Your full name to be recorded in any newly created commits.
@@ -2864,8 +2959,8 @@ user.name::
        environment variables.  See linkgit:git-commit-tree[1].
 
 user.useConfigOnly::
-       Instruct Git to avoid trying to guess defaults for 'user.email'
-       and 'user.name', and instead retrieve the values only from the
+       Instruct Git to avoid trying to guess defaults for `user.email`
+       and `user.name`, and instead retrieve the values only from the
        configuration. For example, if you have multiple email addresses
        and would like to use a different one for each repository, then
        with this configuration option set to `true` in the global config