Hi,
Here is an amended version of my combined series to add '--type' and
'--default'. My apologies for the re-roll, I thought that I had looked
everything over closely enough :-).
Since last time:
* Correct an obviously-wrong assignment into '*to_type' [1]. I have
moved both of these assignments into the top-line declaration of
those variables.
* Re-add a removed hunk to support '--type=color' correctly [2].
Thanks,
Taylor
[1]: https://public-inbox.org/git/[email protected]
[2]: https://public-inbox.org/git/[email protected]
Taylor Blau (5):
builtin/config.c: treat type specifiers singularly
builtin/config.c: support `--type=<type>` as preferred alias for
`--<type>`
builtin/config: introduce `--default`
config.c: introduce 'git_config_color' to parse ANSI colors
builtin/config: introduce `color` type specifier
Documentation/git-config.txt | 81 ++++++++++++--------
builtin/config.c | 143 ++++++++++++++++++++++++++++-------
config.c | 10 +++
config.h | 1 +
t/t1300-repo-config.sh | 93 +++++++++++++++++++++++
t/t1310-config-default.sh | 36 +++++++++
6 files changed, 305 insertions(+), 59 deletions(-)
create mode 100755 t/t1310-config-default.sh
Inter-diff (since v1):
diff --git a/builtin/config.c b/builtin/config.c
index ec5c11293b..bb62816bba 100644
--- a/builtin/config.c
+++ b/builtin/config.c
@@ -72,19 +72,18 @@ static struct option builtin_config_options[];
static int option_parse_type(const struct option *opt, const char *arg,
int unset)
{
- int new_type;
- int *to_type;
+ /*
+ * To support '--<type>' style flags, begin with new_type equal to
+ * opt->defval.
+ */
+ int new_type = opt->defval;
+ int *to_type = opt->value;
if (unset) {
*((int *) opt->value) = 0;
return 0;
}
- /*
- * To support '--<type>' style flags, begin with new_type equal to
- * opt->defval.
- */
- new_type = opt->defval;
if (!new_type) {
if (!strcmp(arg, "bool"))
new_type = TYPE_BOOL;
@@ -96,11 +95,12 @@ static int option_parse_type(const struct option *opt,
const char *arg,
new_type = TYPE_PATH;
else if (!strcmp(arg, "expiry-date"))
new_type = TYPE_EXPIRY_DATE;
+ else if (!strcmp(arg, "color"))
+ new_type = TYPE_COLOR;
else
die(_("unrecognized --type argument, %s"), arg);
}
- *to_type = opt->value;
if (*to_type && *to_type != new_type) {
/*
* Complain when there is a new type not equal to the old type.
--
2.17.0