]>
Commit | Line | Data |
---|---|---|
ee72aeaf JS |
1 | git-repo-config(1) |
2 | ================== | |
2d2465c0 JS |
3 | |
4 | NAME | |
5 | ---- | |
34eb3340 | 6 | git-repo-config - Get and set repository or global options. |
2d2465c0 JS |
7 | |
8 | ||
9 | SYNOPSIS | |
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 | |
21 | DESCRIPTION | |
22 | ----------- | |
4ddba79d JS |
23 | You can query/set/replace/unset options with this command. The name is |
24 | actually the section and the key separated by a dot, and the value will be | |
25 | escaped. | |
2d2465c0 | 26 | |
89c4afe0 BG |
27 | Multiple lines can be added to an option by using the '--add' option. |
28 | If you want to update or unset an option which can occur on multiple | |
6fe31e2e JH |
29 | lines, a POSIX regexp `value_regex` needs to be given. Only the |
30 | existing values that match the regexp are updated or unset. If | |
31 | you want to handle the lines that do *not* match the regex, just | |
32 | prepend a single exclamation mark in front (see EXAMPLES). | |
2d2465c0 | 33 | |
7162dff3 PB |
34 | The 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 | |
36 | convert the value to the canonical form (simple decimal number for int, | |
37 | a "true" or "false" string for bool). If no type specifier is passed, | |
38 | no checks or transformations are performed on the value. | |
39 | ||
2b5f3ed3 | 40 | This 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 | ||
51 | OPTIONS | |
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 |
96 | ENVIRONMENT |
97 | ----------- | |
98 | ||
99 | GIT_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 | |
103 | GIT_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 |
109 | EXAMPLE |
110 | ------- | |
111 | ||
112 | Given 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 | |
137 | you can set the filemode to true with | |
138 | ||
139 | ------------ | |
ee72aeaf | 140 | % git repo-config core.filemode true |
2d2465c0 JS |
141 | ------------ |
142 | ||
addf88e4 PR |
143 | The hypothetical proxy command entries actually have a postfix to discern |
144 | what URL they apply to. Here is how to change the entry for kernel.org | |
2d2465c0 JS |
145 | to "ssh". |
146 | ||
147 | ------------ | |
1ab661dd | 148 | % git repo-config core.gitproxy '"ssh" for kernel.org' 'for kernel.org$' |
2d2465c0 JS |
149 | ------------ |
150 | ||
151 | This makes sure that only the key/value pair for kernel.org is replaced. | |
152 | ||
153 | To delete the entry for renames, do | |
154 | ||
155 | ------------ | |
ee72aeaf | 156 | % git repo-config --unset diff.renames |
2d2465c0 JS |
157 | ------------ |
158 | ||
1ab661dd | 159 | If you want to delete an entry for a multivar (like core.gitproxy above), |
4ddba79d JS |
160 | you have to provide a regex matching the value of exactly one line. |
161 | ||
162 | To 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 |
168 | or |
169 | ||
170 | ------------ | |
ee72aeaf | 171 | % git repo-config core.filemode |
4ddba79d JS |
172 | ------------ |
173 | ||
174 | or, to query a multivar: | |
175 | ||
176 | ------------ | |
1ab661dd | 177 | % git repo-config --get core.gitproxy "for kernel.org$" |
4ddba79d JS |
178 | ------------ |
179 | ||
180 | If 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 | 186 | If you like to live dangerous, you can replace *all* core.gitproxy by a |
4ddba79d JS |
187 | new one with |
188 | ||
189 | ------------ | |
1ab661dd | 190 | % git repo-config --replace-all core.gitproxy ssh |
4ddba79d | 191 | ------------ |
2d2465c0 | 192 | |
f98d863d JS |
193 | However, if you really only want to replace the line for the default proxy, |
194 | i.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 | ||
200 | To 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 |
206 | To 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 |
213 | include::config.txt[] |
214 | ||
215 | ||
2d2465c0 JS |
216 | Author |
217 | ------ | |
218 | Written by Johannes Schindelin <Johannes.Schindelin@gmx.de> | |
219 | ||
220 | Documentation | |
221 | -------------- | |
1ab661dd | 222 | Documentation by Johannes Schindelin, Petr Baudis and the git-list <git@vger.kernel.org>. |
2d2465c0 JS |
223 | |
224 | GIT | |
225 | --- | |
226 | Part of the gitlink:git[7] suite | |
227 |