Fixed git:// IPv4 address problem when compiled with -DNO_IPV6.
[gitweb.git] / Documentation / git-config-set.txt
index 8e897be8387ff65166f9927ae226fffd7754b21c..bfbd42147ae9bfef01e9320340336a9ed8794aee 100644 (file)
@@ -8,15 +8,23 @@ git-config-set - Set options in .git/config.
 
 SYNOPSIS
 --------
-'git-config-set' ( name [value [value_regex]] | --unset name [value_regex] )
+'git-config-set' name [value [value_regex]]
+'git-config-set' --replace-all name [value [value_regex]]
+'git-config-set' --get name [value_regex]
+'git-config-set' --get-all name [value_regex]
+'git-config-set' --unset name [value_regex]
+'git-config-set' --unset-all name [value_regex]
 
 DESCRIPTION
 -----------
-You can set/replace/unset options with this command. The name is actually
-the section and the key separated by a dot, and the value will be escaped.
+You can query/set/replace/unset options with this command. The name is
+actually the section and the key separated by a dot, and the value will be
+escaped.
 
 If you want to set/unset an option which can occor on multiple lines, you
-should provide a POSIX regex for the value.
+should provide a POSIX regex for the value. If you want to handle the lines
+*not* matching the regex, just prepend a single exlamation mark in front
+(see EXAMPLES).
 
 This command will fail if
 
@@ -31,8 +39,23 @@ This command will fail if
 OPTIONS
 -------
 
+--replace-all::
+       Default behaviour is to replace at most one line. This replaces
+       all lines matching the key (and optionally the value_regex)
+
+--get::
+       Get the value for a given key (optionally filtered by a regex
+       matching the value).
+
+--get-all::
+       Like get, but does not fail if the number of values for the key
+       is not exactly one.
+
 --unset::
-       Remove the given option from .git/config
+       Remove the line matching the key from .git/config.
+
+--unset-all::
+       Remove all matching lines from .git/config.
 
 
 EXAMPLE
@@ -61,6 +84,7 @@ Given a .git/config like this:
                command="ssh" for "ssh://kernel.org/"
                command="proxy-command" for kernel.org
                command="myprotocol-command" for "my://"
+               command=default-proxy ; for all the rest
 
 you can set the filemode to true with
 
@@ -84,14 +108,52 @@ To delete the entry for renames, do
 % git config-set --unset diff.renames
 ------------
 
-or just
+If you want to delete an entry for a multivar (like proxy.command above),
+you have to provide a regex matching the value of exactly one line.
+
+To query the value for a given key, do
 
 ------------
-% git config-set diff.renames
+% git config-set --get core.filemode
 ------------
 
-If you want to delete an entry for a multivar (like proxy.command above),
-you have to provide a regex matching the value of exactly one line.
+or
+
+------------
+% git config-set core.filemode
+------------
+
+or, to query a multivar:
+
+------------
+% git config-set --get proxy.command "for kernel.org$"
+------------
+
+If you want to know all the values for a multivar, do:
+
+------------
+% git config-set --get-all proxy.command
+------------
+
+If you like to live dangerous, you can replace *all* proxy.commands by a
+new one with
+
+------------
+% git config-set --replace-all proxy.command ssh
+------------
+
+However, if you really only want to replace the line for the default proxy,
+i.e. the one without a "for ..." postfix, do something like this:
+
+------------
+% git config-set proxy.command ssh '! for '
+------------
+
+To actually match only values with an exclamation mark, you have to
+
+------------
+% git config-set section.key value '[!]'
+------------
 
 
 Author