git/Documentation/git-var.txt
brian m. carlson ed773a18c6 var: add config file locations
Much like with attributes files, sometimes programs would like to know
the location of configuration files at the global or system levels.
However, it isn't always clear where these may live, especially for the
system file, which may have been hard-coded at compile time or computed
dynamically based on the runtime prefix.

Since other parties cannot intuitively know how Git was compiled and
where it looks for these files, help them by providing variables that
can be queried.  Because we have multiple paths for global config
values, print them in order from highest to lowest priority, and be sure
to split on newlines so that "git var -l" produces two entries for the
global value.

However, be careful not to split all values on newlines, since our
editor values could well contain such characters, and we don't want to
split them in such a case.

Note in the documentation that some values may contain multiple paths
and that callers should be prepared for that fact.  This helps people
write code that will continue to work in the event we allow multiple
items elsewhere in the future.

Signed-off-by: brian m. carlson <bk2204@github.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2023-06-27 11:31:06 -07:00

105 lines
3.1 KiB
Text

git-var(1)
==========
NAME
----
git-var - Show a Git logical variable
SYNOPSIS
--------
[verse]
'git var' (-l | <variable>)
DESCRIPTION
-----------
Prints a Git logical variable. Exits with code 1 if the variable has
no value.
OPTIONS
-------
-l::
Cause the logical variables to be listed. In addition, all the
variables of the Git configuration file .git/config are listed
as well. (However, the configuration variables listing functionality
is deprecated in favor of `git config -l`.)
EXAMPLES
--------
$ git var GIT_AUTHOR_IDENT
Eric W. Biederman <ebiederm@lnxi.com> 1121223278 -0600
VARIABLES
---------
GIT_AUTHOR_IDENT::
The author of a piece of code.
GIT_COMMITTER_IDENT::
The person who put a piece of code into Git.
GIT_EDITOR::
Text editor for use by Git commands. The value is meant to be
interpreted by the shell when it is used. Examples: `~/bin/vi`,
`$SOME_ENVIRONMENT_VARIABLE`, `"C:\Program Files\Vim\gvim.exe"
--nofork`. The order of preference is the `$GIT_EDITOR`
environment variable, then `core.editor` configuration, then
`$VISUAL`, then `$EDITOR`, and then the default chosen at compile
time, which is usually 'vi'.
ifdef::git-default-editor[]
The build you are using chose '{git-default-editor}' as the default.
endif::git-default-editor[]
GIT_SEQUENCE_EDITOR::
Text editor used to edit the 'todo' file while running `git rebase
-i`. Like `GIT_EDITOR`, the value is meant to be interpreted by
the shell when it is used. The order of preference is the
`$GIT_SEQUENCE_EDITOR` environment variable, then
`sequence.editor` configuration, and then the value of `git var
GIT_EDITOR`.
GIT_PAGER::
Text viewer for use by Git commands (e.g., 'less'). The value
is meant to be interpreted by the shell. The order of preference
is the `$GIT_PAGER` environment variable, then `core.pager`
configuration, then `$PAGER`, and then the default chosen at
compile time (usually 'less').
ifdef::git-default-pager[]
The build you are using chose '{git-default-pager}' as the default.
endif::git-default-pager[]
GIT_DEFAULT_BRANCH::
The name of the first branch created in newly initialized repositories.
GIT_SHELL_PATH::
The path of the binary providing the POSIX shell for commands which use the shell.
GIT_ATTR_SYSTEM::
The path to the system linkgit:gitattributes[5] file, if one is enabled.
GIT_ATTR_GLOBAL::
The path to the global (per-user) linkgit:gitattributes[5] file.
GIT_CONFIG_SYSTEM::
The path to the system configuration file, if one is enabled.
GIT_CONFIG_GLOBAL::
The path to the global (per-user) configuration files, if any.
Most path values contain only one value. However, some can contain multiple
values, which are separated by newlines, and are listed in order from highest to
lowest priority. Callers should be prepared for any such path value to contain
multiple items.
Note that paths are printed even if they do not exist, but not if they are
disabled by other environment variables.
SEE ALSO
--------
linkgit:git-commit-tree[1]
linkgit:git-tag[1]
linkgit:git-config[1]
GIT
---
Part of the linkgit:git[1] suite