git-repo-config --list support

This adds git-repo-config --list (or git-repo-config -l) support,
similar to what git-var -l does now (to be phased out so that we
have a single sane interface to the config file instead of fragmented
and confused API).

Signed-off-by: Petr Baudis <pasky@suse.cz>
This commit is contained in:
Petr Baudis 2006-04-25 00:59:25 +02:00 committed by Junio C Hamano
parent 36932eab77
commit de791f15a1
2 changed files with 18 additions and 2 deletions

View File

@ -15,6 +15,7 @@ SYNOPSIS
'git-repo-config' [type] --get-all name [value_regex]
'git-repo-config' [type] --unset name [value_regex]
'git-repo-config' [type] --unset-all name [value_regex]
'git-repo-config' -l | --list
DESCRIPTION
-----------
@ -64,6 +65,9 @@ OPTIONS
--unset-all::
Remove all matching lines from .git/config.
-l, --list::
List all variables set in .git/config.
EXAMPLE
-------

View File

@ -2,7 +2,7 @@
#include <regex.h>
static const char git_config_set_usage[] =
"git-repo-config [ --bool | --int ] [--get | --get-all | --replace-all | --unset | --unset-all] name [value [value_regex]]";
"git-repo-config [ --bool | --int ] [--get | --get-all | --replace-all | --unset | --unset-all] name [value [value_regex]] | --list";
static char* key = NULL;
static char* value = NULL;
@ -12,6 +12,15 @@ static int do_not_match = 0;
static int seen = 0;
static enum { T_RAW, T_INT, T_BOOL } type = T_RAW;
static int show_all_config(const char *key_, const char *value_)
{
if (value_)
printf("%s=%s\n", key_, value_);
else
printf("%s\n", key_);
return 0;
}
static int show_config(const char* key_, const char* value_)
{
if (value_ == NULL)
@ -67,7 +76,7 @@ static int get_value(const char* key_, const char* regex_)
}
}
i = git_config(show_config);
git_config(show_config);
if (value) {
printf("%s\n", value);
free(value);
@ -99,6 +108,9 @@ int main(int argc, const char **argv)
argv++;
}
if (!strcmp(argv[1], "--list") || !strcmp(argv[1], "-l"))
return git_config(show_all_config);
switch (argc) {
case 2:
return get_value(argv[1], NULL);