builtin/config: introduce "remove-section" subcommand
Introduce a new "remove-section" subcommand to git-config(1). Please refer to preceding commits regarding the motivation behind this change. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>maint
parent
3418e96f37
commit
15dad20c3f
|
@ -14,7 +14,7 @@ SYNOPSIS
|
||||||
'git config set' [<file-option>] [--type=<type>] [--all] [--value=<value>] [--fixed-value] <name> <value>
|
'git config set' [<file-option>] [--type=<type>] [--all] [--value=<value>] [--fixed-value] <name> <value>
|
||||||
'git config unset' [<file-option>] [--all] [--value=<value>] [--fixed-value] <name> <value>
|
'git config unset' [<file-option>] [--all] [--value=<value>] [--fixed-value] <name> <value>
|
||||||
'git config rename-section' [<file-option>] <old-name> <new-name>
|
'git config rename-section' [<file-option>] <old-name> <new-name>
|
||||||
'git config' [<file-option>] --remove-section <name>
|
'git config remove-section' [<file-option>] <name>
|
||||||
'git config' [<file-option>] --get-colorbool <name> [<stdout-is-tty>]
|
'git config' [<file-option>] --get-colorbool <name> [<stdout-is-tty>]
|
||||||
'git config' [<file-option>] -e | --edit
|
'git config' [<file-option>] -e | --edit
|
||||||
|
|
||||||
|
@ -95,6 +95,9 @@ unset::
|
||||||
rename-section::
|
rename-section::
|
||||||
Rename the given section to a new name.
|
Rename the given section to a new name.
|
||||||
|
|
||||||
|
remove-section::
|
||||||
|
Remove the given section from the configuration file.
|
||||||
|
|
||||||
[[OPTIONS]]
|
[[OPTIONS]]
|
||||||
OPTIONS
|
OPTIONS
|
||||||
-------
|
-------
|
||||||
|
@ -192,9 +195,6 @@ See also <<FILES>>.
|
||||||
section in linkgit:gitrevisions[7] for a more complete list of
|
section in linkgit:gitrevisions[7] for a more complete list of
|
||||||
ways to spell blob names.
|
ways to spell blob names.
|
||||||
|
|
||||||
--remove-section::
|
|
||||||
Remove the given section from the configuration file.
|
|
||||||
|
|
||||||
--fixed-value::
|
--fixed-value::
|
||||||
When used with the `value-pattern` argument, treat `value-pattern` as
|
When used with the `value-pattern` argument, treat `value-pattern` as
|
||||||
an exact string instead of a regular expression. This will restrict
|
an exact string instead of a regular expression. This will restrict
|
||||||
|
@ -333,6 +333,9 @@ recommended to migrate to the new syntax.
|
||||||
--rename-section <old-name> <new-name>::
|
--rename-section <old-name> <new-name>::
|
||||||
Replaced by `git config rename-section <old-name> <new-name>`.
|
Replaced by `git config rename-section <old-name> <new-name>`.
|
||||||
|
|
||||||
|
--remove-section <name>::
|
||||||
|
Replaced by `git config remove-section <name>`.
|
||||||
|
|
||||||
CONFIGURATION
|
CONFIGURATION
|
||||||
-------------
|
-------------
|
||||||
`pager.config` is only respected when listing configuration, i.e., when
|
`pager.config` is only respected when listing configuration, i.e., when
|
||||||
|
|
|
@ -21,6 +21,7 @@ static const char *const builtin_config_usage[] = {
|
||||||
N_("git config set [<file-option>] [--type=<type>] [--all] [--value=<value>] [--fixed-value] <name> <value>"),
|
N_("git config set [<file-option>] [--type=<type>] [--all] [--value=<value>] [--fixed-value] <name> <value>"),
|
||||||
N_("git config unset [<file-option>] [--all] [--value=<value>] [--fixed-value] <name> <value>"),
|
N_("git config unset [<file-option>] [--all] [--value=<value>] [--fixed-value] <name> <value>"),
|
||||||
N_("git config rename-section [<file-option>] <old-name> <new-name>"),
|
N_("git config rename-section [<file-option>] <old-name> <new-name>"),
|
||||||
|
N_("git config remove-section [<file-option>] <name>"),
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -49,6 +50,11 @@ static const char *const builtin_config_rename_section_usage[] = {
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static const char *const builtin_config_remove_section_usage[] = {
|
||||||
|
N_("git config remove-section [<file-option>] <name>"),
|
||||||
|
NULL
|
||||||
|
};
|
||||||
|
|
||||||
static char *key;
|
static char *key;
|
||||||
static regex_t *key_regexp;
|
static regex_t *key_regexp;
|
||||||
static const char *value_pattern;
|
static const char *value_pattern;
|
||||||
|
@ -980,12 +986,38 @@ static int cmd_config_rename_section(int argc, const char **argv, const char *pr
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int cmd_config_remove_section(int argc, const char **argv, const char *prefix)
|
||||||
|
{
|
||||||
|
struct option opts[] = {
|
||||||
|
CONFIG_LOCATION_OPTIONS,
|
||||||
|
OPT_END(),
|
||||||
|
};
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
argc = parse_options(argc, argv, prefix, opts, builtin_config_remove_section_usage,
|
||||||
|
PARSE_OPT_STOP_AT_NON_OPTION);
|
||||||
|
check_write();
|
||||||
|
check_argc(argc, 1, 1);
|
||||||
|
|
||||||
|
handle_config_location(prefix);
|
||||||
|
|
||||||
|
ret = git_config_rename_section_in_file(given_config_source.file,
|
||||||
|
argv[0], NULL);
|
||||||
|
if (ret < 0)
|
||||||
|
return ret;
|
||||||
|
else if (!ret)
|
||||||
|
die(_("no such section: %s"), argv[0]);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static struct option builtin_subcommand_options[] = {
|
static struct option builtin_subcommand_options[] = {
|
||||||
OPT_SUBCOMMAND("list", &subcommand, cmd_config_list),
|
OPT_SUBCOMMAND("list", &subcommand, cmd_config_list),
|
||||||
OPT_SUBCOMMAND("get", &subcommand, cmd_config_get),
|
OPT_SUBCOMMAND("get", &subcommand, cmd_config_get),
|
||||||
OPT_SUBCOMMAND("set", &subcommand, cmd_config_set),
|
OPT_SUBCOMMAND("set", &subcommand, cmd_config_set),
|
||||||
OPT_SUBCOMMAND("unset", &subcommand, cmd_config_unset),
|
OPT_SUBCOMMAND("unset", &subcommand, cmd_config_unset),
|
||||||
OPT_SUBCOMMAND("rename-section", &subcommand, cmd_config_rename_section),
|
OPT_SUBCOMMAND("rename-section", &subcommand, cmd_config_rename_section),
|
||||||
|
OPT_SUBCOMMAND("remove-section", &subcommand, cmd_config_remove_section),
|
||||||
OPT_END(),
|
OPT_END(),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -813,7 +813,7 @@ cat >> .git/config << EOF
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
test_expect_success 'remove section' '
|
test_expect_success 'remove section' '
|
||||||
git config --remove-section branch.zwei
|
git config ${mode_prefix}remove-section branch.zwei
|
||||||
'
|
'
|
||||||
|
|
||||||
cat > expect << EOF
|
cat > expect << EOF
|
||||||
|
@ -2602,7 +2602,7 @@ test_expect_success 'refuse --fixed-value for incompatible actions' '
|
||||||
test_must_fail git config --file=config --fixed-value --get-urlmatch dev.null bogus &&
|
test_must_fail git config --file=config --fixed-value --get-urlmatch dev.null bogus &&
|
||||||
test_must_fail git config --file=config --fixed-value --get-urlmatch dev.null bogus &&
|
test_must_fail git config --file=config --fixed-value --get-urlmatch dev.null bogus &&
|
||||||
test_must_fail git config ${mode_prefix}rename-section --file=config --fixed-value dev null &&
|
test_must_fail git config ${mode_prefix}rename-section --file=config --fixed-value dev null &&
|
||||||
test_must_fail git config --file=config --fixed-value --remove-section dev &&
|
test_must_fail git config ${mode_prefix}remove-section --file=config --fixed-value dev &&
|
||||||
test_must_fail git config ${mode_prefix}list --file=config --fixed-value &&
|
test_must_fail git config ${mode_prefix}list --file=config --fixed-value &&
|
||||||
test_must_fail git config --file=config --fixed-value --get-color dev.null &&
|
test_must_fail git config --file=config --fixed-value --get-color dev.null &&
|
||||||
test_must_fail git config --file=config --fixed-value --get-colorbool dev.null &&
|
test_must_fail git config --file=config --fixed-value --get-colorbool dev.null &&
|
||||||
|
|
Loading…
Reference in New Issue