Skip to content

Commit

Permalink
Add an option to specify a file to config builtin
Browse files Browse the repository at this point in the history
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 <raa.lkml@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Alex Riesen authored and Junio C Hamano committed Aug 1, 2007
1 parent 10861be commit 67d454f
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 14 deletions.
29 changes: 16 additions & 13 deletions Documentation/git-config.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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
-----------
Expand All @@ -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,
Expand Down Expand Up @@ -93,6 +93,9 @@ rather than from all available files.
+
See also <<FILES>>.

-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.

Expand Down
9 changes: 8 additions & 1 deletion builtin-config.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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';
Expand Down

0 comments on commit 67d454f

Please sign in to comment.