From 3bec8ff99a7792cae67aaeb5892d832478d7f548 Mon Sep 17 00:00:00 2001 From: Felipe Contreras Date: Sat, 7 Feb 2009 23:53:00 +0200 Subject: [PATCH 1/3] config: Add new option to open an editor. The idea was originated by discussion about usability of manually editing the config file in 'special needs' systems such as Windows. Now the user can forget a bit about where the config files actually are. Signed-off-by: Felipe Contreras Signed-off-by: Junio C Hamano --- Documentation/git-config.txt | 6 ++++++ builtin-config.c | 13 ++++++++++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/Documentation/git-config.txt b/Documentation/git-config.txt index 19a8917b83..7d140073b1 100644 --- a/Documentation/git-config.txt +++ b/Documentation/git-config.txt @@ -22,6 +22,7 @@ SYNOPSIS 'git config' [] [-z|--null] -l | --list 'git config' [] --get-color name [default] 'git config' [] --get-colorbool name [stdout-is-tty] +'git config' [] -e | --edit DESCRIPTION ----------- @@ -157,6 +158,11 @@ See also <>. output. The optional `default` parameter is used instead, if there is no color configured for `name`. +-e:: +--edit:: + Opens an editor to modify the specified config file; either + '--system', '--global', or repository (default). + [[FILES]] FILES ----- diff --git a/builtin-config.c b/builtin-config.c index f71016204b..6937eaf379 100644 --- a/builtin-config.c +++ b/builtin-config.c @@ -3,7 +3,7 @@ #include "color.h" static const char git_config_set_usage[] = -"git config [ --global | --system | [ -f | --file ] config-file ] [ --bool | --int | --bool-or-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 | --get-color var [default] | --get-colorbool name [stdout-is-tty]"; +"git config [ --global | --system | [ -f | --file ] config-file ] [ --bool | --int | --bool-or-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 | --get-color var [default] | --get-colorbool name [stdout-is-tty] | --edit | -e ]"; static char *key; static regex_t *key_regexp; @@ -362,6 +362,17 @@ int cmd_config(int argc, const char **argv, const char *prefix) return get_color(argc-2, argv+2); } else if (!strcmp(argv[1], "--get-colorbool")) { return get_colorbool(argc-2, argv+2); + } else if (!strcmp(argv[1], "--edit") || !strcmp(argv[1], "-e")) { + const char *config_filename; + if (argc != 2) + usage(git_config_set_usage); + if (config_exclusive_filename) + config_filename = config_exclusive_filename; + else + config_filename = git_path("config"); + git_config(git_default_config, NULL); + launch_editor(config_filename, NULL, NULL); + return 0; } else break; argc--; From 4b951b7eb0a4abf7db301bc6dbf8a0cf1b0057d0 Mon Sep 17 00:00:00 2001 From: Felipe Contreras Date: Sat, 21 Feb 2009 02:48:53 +0200 Subject: [PATCH 2/3] git config: codestyle cleanups Signed-off-by: Felipe Contreras Signed-off-by: Junio C Hamano --- builtin-config.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/builtin-config.c b/builtin-config.c index 6937eaf379..afc4393b17 100644 --- a/builtin-config.c +++ b/builtin-config.c @@ -27,7 +27,7 @@ static int show_all_config(const char *key_, const char *value_, void *cb) return 0; } -static int show_config(const char* key_, const char* value_, void *cb) +static int show_config(const char *key_, const char *value_, void *cb) { char value[256]; const char *vptr = value; @@ -74,7 +74,7 @@ static int show_config(const char* key_, const char* value_, void *cb) return 0; } -static int get_value(const char* key_, const char* regex_) +static int get_value(const char *key_, const char *regex_) { int ret = -1; char *tl; @@ -284,7 +284,7 @@ static int get_colorbool(int argc, const char **argv) int cmd_config(int argc, const char **argv, const char *prefix) { int nongit; - char* value; + char *value; const char *file = setup_git_directory_gently(&nongit); config_exclusive_filename = getenv(CONFIG_ENVIRONMENT); From 414f2e5337b0b78a47f021cb734e9ba4934c0b28 Mon Sep 17 00:00:00 2001 From: Johannes Schindelin Date: Sat, 21 Feb 2009 02:48:54 +0200 Subject: [PATCH 3/3] git config: trivial cleanup for editor action Signed-off-by: Felipe Contreras Signed-off-by: Junio C Hamano --- builtin-config.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/builtin-config.c b/builtin-config.c index afc4393b17..d52a057444 100644 --- a/builtin-config.c +++ b/builtin-config.c @@ -363,15 +363,12 @@ int cmd_config(int argc, const char **argv, const char *prefix) } else if (!strcmp(argv[1], "--get-colorbool")) { return get_colorbool(argc-2, argv+2); } else if (!strcmp(argv[1], "--edit") || !strcmp(argv[1], "-e")) { - const char *config_filename; if (argc != 2) usage(git_config_set_usage); - if (config_exclusive_filename) - config_filename = config_exclusive_filename; - else - config_filename = git_path("config"); git_config(git_default_config, NULL); - launch_editor(config_filename, NULL, NULL); + launch_editor(config_exclusive_filename ? + config_exclusive_filename : git_path("config"), + NULL, NULL); return 0; } else break;