]> git.ipfire.org Git - thirdparty/git.git/blame - Documentation/git-repo-config.txt
Release config lock if the regex is invalid
[thirdparty/git.git] / Documentation / git-repo-config.txt
CommitLineData
ee72aeaf
JS
1git-repo-config(1)
2==================
2d2465c0
JS
3
4NAME
5----
7bd7f280 6git-repo-config - Get and set options in .git/config
2d2465c0
JS
7
8
9SYNOPSIS
10--------
c7569b1e 11[verse]
7162dff3
PB
12'git-repo-config' [type] name [value [value_regex]]
13'git-repo-config' [type] --replace-all name [value [value_regex]]
14'git-repo-config' [type] --get name [value_regex]
15'git-repo-config' [type] --get-all name [value_regex]
16'git-repo-config' [type] --unset name [value_regex]
17'git-repo-config' [type] --unset-all name [value_regex]
2d2465c0
JS
18
19DESCRIPTION
20-----------
4ddba79d
JS
21You can query/set/replace/unset options with this command. The name is
22actually the section and the key separated by a dot, and the value will be
23escaped.
2d2465c0 24
89438677 25If you want to set/unset an option which can occur on multiple lines, you
f98d863d 26should provide a POSIX regex for the value. If you want to handle the lines
89438677 27*not* matching the regex, just prepend a single exclamation mark in front
f98d863d 28(see EXAMPLES).
2d2465c0 29
7162dff3
PB
30The type specifier can be either '--int' or '--bool', which will make
31'git-repo-config' ensure that the variable(s) are of the given type and
32convert the value to the canonical form (simple decimal number for int,
33a "true" or "false" string for bool). If no type specifier is passed,
34no checks or transformations are performed on the value.
35
2d2465c0
JS
36This command will fail if
37
38. .git/config is invalid,
39. .git/config can not be written to,
40. no section was provided,
41. the section or key is invalid,
42. you try to unset an option which does not exist, or
43. you try to unset/set an option for which multiple lines match.
44
45
46OPTIONS
47-------
48
4ddba79d
JS
49--replace-all::
50 Default behaviour is to replace at most one line. This replaces
51 all lines matching the key (and optionally the value_regex)
52
53--get::
54 Get the value for a given key (optionally filtered by a regex
55 matching the value).
56
57--get-all::
58 Like get, but does not fail if the number of values for the key
59 is not exactly one.
60
2d2465c0 61--unset::
4ddba79d
JS
62 Remove the line matching the key from .git/config.
63
64--unset-all::
65 Remove all matching lines from .git/config.
2d2465c0
JS
66
67
68EXAMPLE
69-------
70
71Given a .git/config like this:
72
73 #
74 # This is the config file, and
75 # a '#' or ';' character indicates
76 # a comment
77 #
78
79 ; core variables
80 [core]
81 ; Don't trust file modes
82 filemode = false
83
84 ; Our diff algorithm
85 [diff]
86 external = "/usr/local/bin/gnu-diff -u"
87 renames = true
88
89 ; Proxy settings
1ab661dd
PB
90 [core]
91 gitproxy="ssh" for "ssh://kernel.org/"
92 gitproxy="proxy-command" for kernel.org
93 gitproxy="myprotocol-command" for "my://"
94 gitproxy=default-proxy ; for all the rest
2d2465c0
JS
95
96you can set the filemode to true with
97
98------------
ee72aeaf 99% git repo-config core.filemode true
2d2465c0
JS
100------------
101
102The hypothetic proxy command entries actually have a postfix to discern
103to what URL they apply. Here is how to change the entry for kernel.org
104to "ssh".
105
106------------
1ab661dd 107% git repo-config core.gitproxy '"ssh" for kernel.org' 'for kernel.org$'
2d2465c0
JS
108------------
109
110This makes sure that only the key/value pair for kernel.org is replaced.
111
112To delete the entry for renames, do
113
114------------
ee72aeaf 115% git repo-config --unset diff.renames
2d2465c0
JS
116------------
117
1ab661dd 118If you want to delete an entry for a multivar (like core.gitproxy above),
4ddba79d
JS
119you have to provide a regex matching the value of exactly one line.
120
121To query the value for a given key, do
2d2465c0
JS
122
123------------
ee72aeaf 124% git repo-config --get core.filemode
2d2465c0
JS
125------------
126
4ddba79d
JS
127or
128
129------------
ee72aeaf 130% git repo-config core.filemode
4ddba79d
JS
131------------
132
133or, to query a multivar:
134
135------------
1ab661dd 136% git repo-config --get core.gitproxy "for kernel.org$"
4ddba79d
JS
137------------
138
139If you want to know all the values for a multivar, do:
140
141------------
1ab661dd 142% git repo-config --get-all core.gitproxy
4ddba79d
JS
143------------
144
1ab661dd 145If you like to live dangerous, you can replace *all* core.gitproxy by a
4ddba79d
JS
146new one with
147
148------------
1ab661dd 149% git repo-config --replace-all core.gitproxy ssh
4ddba79d 150------------
2d2465c0 151
f98d863d
JS
152However, if you really only want to replace the line for the default proxy,
153i.e. the one without a "for ..." postfix, do something like this:
154
155------------
1ab661dd 156% git repo-config core.gitproxy ssh '! for '
f98d863d
JS
157------------
158
159To actually match only values with an exclamation mark, you have to
160
161------------
ee72aeaf 162% git repo-config section.key value '[!]'
f98d863d
JS
163------------
164
2d2465c0 165
1ab661dd
PB
166include::config.txt[]
167
168
2d2465c0
JS
169Author
170------
171Written by Johannes Schindelin <Johannes.Schindelin@gmx.de>
172
173Documentation
174--------------
1ab661dd 175Documentation by Johannes Schindelin, Petr Baudis and the git-list <git@vger.kernel.org>.
2d2465c0
JS
176
177GIT
178---
179Part of the gitlink:git[7] suite
180