From 67d454fed6ae1f127d2daa57db946df200f2382a Mon Sep 17 00:00:00 2001 From: Alex Riesen Date: Tue, 31 Jul 2007 11:58:43 +0200 Subject: [PATCH] Add an option to specify a file to config builtin There are (really!) systems where using environment variables is very cumbersome (yes, Windows, it has problems unsetting them). Besides this form is shorter. Signed-off-by: Alex Riesen Signed-off-by: Junio C Hamano --- Documentation/git-config.txt | 29 ++++++++++++++++------------- builtin-config.c | 9 ++++++++- 2 files changed, 24 insertions(+), 14 deletions(-) diff --git a/Documentation/git-config.txt b/Documentation/git-config.txt index 5f66a7fcd5..88acf6ce98 100644 --- a/Documentation/git-config.txt +++ b/Documentation/git-config.txt @@ -9,17 +9,17 @@ git-config - Get and set repository or global options SYNOPSIS -------- [verse] -'git-config' [--system | --global] [type] [-z|--null] name [value [value_regex]] -'git-config' [--system | --global] [type] --add name value -'git-config' [--system | --global] [type] --replace-all name [value [value_regex]] -'git-config' [--system | --global] [type] [-z|--null] --get name [value_regex] -'git-config' [--system | --global] [type] [-z|--null] --get-all name [value_regex] -'git-config' [--system | --global] [type] [-z|--null] --get-regexp name_regex [value_regex] -'git-config' [--system | --global] --unset name [value_regex] -'git-config' [--system | --global] --unset-all name [value_regex] -'git-config' [--system | --global] --rename-section old_name new_name -'git-config' [--system | --global] --remove-section name -'git-config' [--system | --global] [-z|--null] -l | --list +'git-config' [--system | --global | [-f|--file] config-file] [type] [-z|--null] name [value [value_regex]] +'git-config' [--system | --global | [-f|--file] config-file] [type] --add name value +'git-config' [--system | --global | [-f|--file] config-file] [type] --replace-all name [value [value_regex]] +'git-config' [--system | --global | [-f|--file] config-file] [type] [-z|--null] --get name [value_regex] +'git-config' [--system | --global | [-f|--file] config-file] [type] [-z|--null] --get-all name [value_regex] +'git-config' [--system | --global | [-f|--file] config-file] [type] [-z|--null] --get-regexp name_regex [value_regex] +'git-config' [--system | --global | [-f|--file] config-file] --unset name [value_regex] +'git-config' [--system | --global | [-f|--file] config-file] --unset-all name [value_regex] +'git-config' [--system | --global | [-f|--file] config-file] --rename-section old_name new_name +'git-config' [--system | --global | [-f|--file] config-file] --remove-section name +'git-config' [--system | --global | [-f|--file] config-file] [-z|--null] -l | --list DESCRIPTION ----------- @@ -42,8 +42,8 @@ no checks or transformations are performed on the value. This command will fail if: -. The .git/config file is invalid, -. Can not write to .git/config, +. The config file is invalid, +. Can not write to the config file, . no section was provided, . the section or key is invalid, . you try to unset an option which does not exist, @@ -93,6 +93,9 @@ rather than from all available files. + See also <>. +-f config-file, --file config-file:: + Use the given config file instead of the one specified by GIT_CONFIG. + --remove-section:: Remove the given section from the configuration file. diff --git a/builtin-config.c b/builtin-config.c index 7d2063c1d2..0a605e01ac 100644 --- a/builtin-config.c +++ b/builtin-config.c @@ -2,7 +2,7 @@ #include "cache.h" static const char git_config_set_usage[] = -"git-config [ --global | --system ] [ --bool | --int ] [ -z | --null ] [--get | --get-all | --get-regexp | --replace-all | --add | --unset | --unset-all] name [value [value_regex]] | --rename-section old_name new_name | --remove-section name | --list"; +"git-config [ --global | --system | [ -f | --file ] config-file ] [ --bool | --int ] [ -z | --null ] [--get | --get-all | --get-regexp | --replace-all | --add | --unset | --unset-all] name [value [value_regex]] | --rename-section old_name new_name | --remove-section name | --list"; static char *key; static regex_t *key_regexp; @@ -186,6 +186,13 @@ int cmd_config(int argc, const char **argv, const char *prefix) } else if (!strcmp(argv[1], "--system")) setenv(CONFIG_ENVIRONMENT, ETC_GITCONFIG, 1); + else if (!strcmp(argv[1], "--file") || !strcmp(argv[1], "-f")) { + if (argc < 3) + usage(git_config_set_usage); + setenv(CONFIG_ENVIRONMENT, argv[2], 1); + argc--; + argv++; + } else if (!strcmp(argv[1], "--null") || !strcmp(argv[1], "-z")) { term = '\0'; delim = '\n';