summaryrefslogtreecommitdiff
path: root/builtin-config.c
diff options
context:
space:
mode:
authorFelipe Contreras <felipe.contreras@gmail.com>2009-02-07 23:53:00 +0200
committerJunio C Hamano <gitster@pobox.com>2009-02-08 13:02:34 -0800
commit3bec8ff99a7792cae67aaeb5892d832478d7f548 (patch)
tree862bfc39bcc921abac3b7cf98813ad5844982439 /builtin-config.c
parent621f1b4bcf40f1469fc59202248df35619e33c82 (diff)
downloadgit-3bec8ff99a7792cae67aaeb5892d832478d7f548.tar.gz
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 <felipe.contreras@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'builtin-config.c')
-rw-r--r--builtin-config.c13
1 files changed, 12 insertions, 1 deletions
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--;