mirror of
https://github.com/git/git.git
synced 2024-11-24 10:26:17 +08:00
Add --add option to git-repo-config
For multivars, the "git-repo-config name value ^$" is useful but nonintuitive and troublesome to do repeatedly (since the value is not at the end of the command line). This commit simply adds an --add option that adds a new value to a multivar. Particularly useful for tracking a new branch on a remote: git-repo-config --add remote.origin.fetch +next:origin/next Includes documentation and test. Signed-off-by: Brian Gernhardt <benji@silverinsanity.com> Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
parent
9013192449
commit
89c4afe0d0
@ -10,6 +10,7 @@ SYNOPSIS
|
||||
--------
|
||||
[verse]
|
||||
'git-repo-config' [--global] [type] name [value [value_regex]]
|
||||
'git-repo-config' [--global] [type] --add name value
|
||||
'git-repo-config' [--global] [type] --replace-all name [value [value_regex]]
|
||||
'git-repo-config' [--global] [type] --get name [value_regex]
|
||||
'git-repo-config' [--global] [type] --get-all name [value_regex]
|
||||
@ -23,7 +24,8 @@ 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 occur on multiple
|
||||
Multiple lines can be added to an option by using the '--add' option.
|
||||
If you want to update or unset an option which can occur on multiple
|
||||
lines, a POSIX regexp `value_regex` needs to be given. Only the
|
||||
existing values that match the regexp are updated or unset. If
|
||||
you want to handle the lines that do *not* match the regex, just
|
||||
@ -53,6 +55,10 @@ OPTIONS
|
||||
Default behavior is to replace at most one line. This replaces
|
||||
all lines matching the key (and optionally the value_regex).
|
||||
|
||||
--add::
|
||||
Adds a new line to the option without altering any existing
|
||||
values. This is the same as providing '^$' as the value_regex.
|
||||
|
||||
--get::
|
||||
Get the value for a given key (optionally filtered by a regex
|
||||
matching the value). Returns error code 1 if the key was not
|
||||
@ -194,6 +200,12 @@ To actually match only values with an exclamation mark, you have to
|
||||
% git repo-config section.key value '[!]'
|
||||
------------
|
||||
|
||||
To add a new proxy, without altering any of the existing ones, use
|
||||
|
||||
------------
|
||||
% git repo-config core.gitproxy '"proxy" for example.com'
|
||||
------------
|
||||
|
||||
|
||||
include::config.txt[]
|
||||
|
||||
|
@ -3,7 +3,7 @@
|
||||
#include <regex.h>
|
||||
|
||||
static const char git_config_set_usage[] =
|
||||
"git-repo-config [ --global ] [ --bool | --int ] [--get | --get-all | --get-regexp | --replace-all | --unset | --unset-all] name [value [value_regex]] | --list";
|
||||
"git-repo-config [ --global ] [ --bool | --int ] [--get | --get-all | --get-regexp | --replace-all | --add | --unset | --unset-all] name [value [value_regex]] | --list";
|
||||
|
||||
static char *key;
|
||||
static regex_t *key_regexp;
|
||||
@ -190,7 +190,9 @@ int cmd_repo_config(int argc, const char **argv, const char *prefix)
|
||||
use_key_regexp = 1;
|
||||
do_all = 1;
|
||||
return get_value(argv[2], argv[3]);
|
||||
} else if (!strcmp(argv[1], "--replace-all"))
|
||||
} else if (!strcmp(argv[1], "--add"))
|
||||
return git_config_set_multivar(argv[2], argv[3], "^$", 0);
|
||||
else if (!strcmp(argv[1], "--replace-all"))
|
||||
|
||||
return git_config_set_multivar(argv[2], argv[3], NULL, 1);
|
||||
else
|
||||
|
@ -265,6 +265,16 @@ EOF
|
||||
test_expect_success '--get-regexp' \
|
||||
'git-repo-config --get-regexp in > output && cmp output expect'
|
||||
|
||||
git-repo-config --add nextsection.nonewline "wow4 for you"
|
||||
|
||||
cat > expect << EOF
|
||||
wow2 for me
|
||||
wow4 for you
|
||||
EOF
|
||||
|
||||
test_expect_success '--add' \
|
||||
'git-repo-config --get-all nextsection.nonewline > output && cmp output expect'
|
||||
|
||||
cat > .git/config << EOF
|
||||
[novalue]
|
||||
variable
|
||||
|
Loading…
Reference in New Issue
Block a user