]> git.ipfire.org Git - thirdparty/git.git/blame - Documentation/git-repo-config.txt
Teach Git how to parse standard power of 2 suffixes.
[thirdparty/git.git] / Documentation / git-repo-config.txt
CommitLineData
ee72aeaf
JS
1git-repo-config(1)
2==================
2d2465c0
JS
3
4NAME
5----
34eb3340 6git-repo-config - Get and set repository or global options.
2d2465c0
JS
7
8
9SYNOPSIS
10--------
c7569b1e 11[verse]
34eb3340 12'git-repo-config' [--global] [type] name [value [value_regex]]
89c4afe0 13'git-repo-config' [--global] [type] --add name value
34eb3340
SE
14'git-repo-config' [--global] [type] --replace-all name [value [value_regex]]
15'git-repo-config' [--global] [type] --get name [value_regex]
16'git-repo-config' [--global] [type] --get-all name [value_regex]
17'git-repo-config' [--global] [type] --unset name [value_regex]
18'git-repo-config' [--global] [type] --unset-all name [value_regex]
19'git-repo-config' [--global] -l | --list
2d2465c0
JS
20
21DESCRIPTION
22-----------
4ddba79d
JS
23You can query/set/replace/unset options with this command. The name is
24actually the section and the key separated by a dot, and the value will be
25escaped.
2d2465c0 26
89c4afe0
BG
27Multiple lines can be added to an option by using the '--add' option.
28If you want to update or unset an option which can occur on multiple
6fe31e2e
JH
29lines, a POSIX regexp `value_regex` needs to be given. Only the
30existing values that match the regexp are updated or unset. If
31you want to handle the lines that do *not* match the regex, just
32prepend a single exclamation mark in front (see EXAMPLES).
2d2465c0 33
7162dff3
PB
34The type specifier can be either '--int' or '--bool', which will make
35'git-repo-config' ensure that the variable(s) are of the given type and
36convert the value to the canonical form (simple decimal number for int,
37a "true" or "false" string for bool). If no type specifier is passed,
38no checks or transformations are performed on the value.
39
2b5f3ed3 40This command will fail if:
2d2465c0 41
2b5f3ed3
SE
42. The .git/config file is invalid,
43. Can not write to .git/config,
2d2465c0
JS
44. no section was provided,
45. the section or key is invalid,
34eb3340
SE
46. you try to unset an option which does not exist,
47. you try to unset/set an option for which multiple lines match, or
48. you use --global option without $HOME being properly set.
2d2465c0
JS
49
50
51OPTIONS
52-------
53
4ddba79d 54--replace-all::
abda1ef5 55 Default behavior is to replace at most one line. This replaces
2fa9a0fb 56 all lines matching the key (and optionally the value_regex).
4ddba79d 57
89c4afe0
BG
58--add::
59 Adds a new line to the option without altering any existing
60 values. This is the same as providing '^$' as the value_regex.
61
4ddba79d
JS
62--get::
63 Get the value for a given key (optionally filtered by a regex
dc2613de
PB
64 matching the value). Returns error code 1 if the key was not
65 found and error code 2 if multiple key values were found.
4ddba79d
JS
66
67--get-all::
68 Like get, but does not fail if the number of values for the key
69 is not exactly one.
70
2fa9a0fb
JS
71--get-regexp::
72 Like --get-all, but interprets the name as a regular expression.
73
34eb3340
SE
74--global::
75 Use global ~/.gitconfig file rather than the repository .git/config.
76
2d2465c0 77--unset::
34eb3340 78 Remove the line matching the key from config file.
4ddba79d
JS
79
80--unset-all::
34eb3340 81 Remove all matching lines from config file.
2d2465c0 82
de791f15 83-l, --list::
34eb3340 84 List all variables set in config file.
de791f15 85
eb07fd59
AP
86--bool::
87 git-repo-config will ensure that the output is "true" or "false"
88
89--int::
d77a64d3
SP
90 git-repo-config will ensure that the output is a simple
91 decimal number. An optional value suffix of 'k', 'm', or 'g'
92 in the config file will cause the value to be multiplied
93 by 1024, 1048576, or 1073741824 prior to output.
eb07fd59 94
2d2465c0 95
7f29f7a9
PB
96ENVIRONMENT
97-----------
98
99GIT_CONFIG::
100 Take the configuration from the given file instead of .git/config.
34eb3340 101 Using the "--global" option forces this to ~/.gitconfig.
7f29f7a9
PB
102
103GIT_CONFIG_LOCAL::
104 Currently the same as $GIT_CONFIG; when Git will support global
105 configuration files, this will cause it to take the configuration
106 from the global configuration file in addition to the given file.
107
108
2d2465c0
JS
109EXAMPLE
110-------
111
112Given a .git/config like this:
113
114 #
115 # This is the config file, and
116 # a '#' or ';' character indicates
117 # a comment
118 #
119
120 ; core variables
121 [core]
122 ; Don't trust file modes
123 filemode = false
124
125 ; Our diff algorithm
126 [diff]
127 external = "/usr/local/bin/gnu-diff -u"
128 renames = true
129
130 ; Proxy settings
1ab661dd
PB
131 [core]
132 gitproxy="ssh" for "ssh://kernel.org/"
133 gitproxy="proxy-command" for kernel.org
134 gitproxy="myprotocol-command" for "my://"
135 gitproxy=default-proxy ; for all the rest
2d2465c0
JS
136
137you can set the filemode to true with
138
139------------
ee72aeaf 140% git repo-config core.filemode true
2d2465c0
JS
141------------
142
addf88e4
PR
143The hypothetical proxy command entries actually have a postfix to discern
144what URL they apply to. Here is how to change the entry for kernel.org
2d2465c0
JS
145to "ssh".
146
147------------
1ab661dd 148% git repo-config core.gitproxy '"ssh" for kernel.org' 'for kernel.org$'
2d2465c0
JS
149------------
150
151This makes sure that only the key/value pair for kernel.org is replaced.
152
153To delete the entry for renames, do
154
155------------
ee72aeaf 156% git repo-config --unset diff.renames
2d2465c0
JS
157------------
158
1ab661dd 159If you want to delete an entry for a multivar (like core.gitproxy above),
4ddba79d
JS
160you have to provide a regex matching the value of exactly one line.
161
162To query the value for a given key, do
2d2465c0
JS
163
164------------
ee72aeaf 165% git repo-config --get core.filemode
2d2465c0
JS
166------------
167
4ddba79d
JS
168or
169
170------------
ee72aeaf 171% git repo-config core.filemode
4ddba79d
JS
172------------
173
174or, to query a multivar:
175
176------------
1ab661dd 177% git repo-config --get core.gitproxy "for kernel.org$"
4ddba79d
JS
178------------
179
180If you want to know all the values for a multivar, do:
181
182------------
1ab661dd 183% git repo-config --get-all core.gitproxy
4ddba79d
JS
184------------
185
1ab661dd 186If you like to live dangerous, you can replace *all* core.gitproxy by a
4ddba79d
JS
187new one with
188
189------------
1ab661dd 190% git repo-config --replace-all core.gitproxy ssh
4ddba79d 191------------
2d2465c0 192
f98d863d
JS
193However, if you really only want to replace the line for the default proxy,
194i.e. the one without a "for ..." postfix, do something like this:
195
196------------
1ab661dd 197% git repo-config core.gitproxy ssh '! for '
f98d863d
JS
198------------
199
200To actually match only values with an exclamation mark, you have to
201
202------------
ee72aeaf 203% git repo-config section.key value '[!]'
f98d863d
JS
204------------
205
89c4afe0
BG
206To add a new proxy, without altering any of the existing ones, use
207
208------------
209% git repo-config core.gitproxy '"proxy" for example.com'
210------------
211
2d2465c0 212
1ab661dd
PB
213include::config.txt[]
214
215
2d2465c0
JS
216Author
217------
218Written by Johannes Schindelin <Johannes.Schindelin@gmx.de>
219
220Documentation
221--------------
1ab661dd 222Documentation by Johannes Schindelin, Petr Baudis and the git-list <git@vger.kernel.org>.
2d2465c0
JS
223
224GIT
225---
226Part of the gitlink:git[7] suite
227