aboutsummaryrefslogtreecommitdiff
path: root/builtin/config.c
diff options
context:
space:
mode:
authorKirill A. Shutemov <kirill@shutemov.name>2014-02-19 00:58:55 +0200
committerJunio C Hamano <gitster@pobox.com>2014-02-18 16:12:14 -0800
commit3caec73b5568341c5d8f303692423a8e9fb0cb39 (patch)
tree469a2cb5f3e8bdaf95832eaf846ba76926b8751c /builtin/config.c
parentc8985ce05360857733738561dd6cdf964470cbdf (diff)
downloadgit-3caec73b5568341c5d8f303692423a8e9fb0cb39.tar.gz
git-3caec73b5568341c5d8f303692423a8e9fb0cb39.tar.xz
config: teach "git config --file -" to read from the standard input
The patch extends git config --file interface to allow read config from stdin. Editing stdin or setting value in stdin is an error. Include by absolute path is allowed in stdin config, but not by relative path. Signed-off-by: Kirill A. Shutemov <kirill@shutemov.name> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'builtin/config.c')
-rw-r--r--builtin/config.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/builtin/config.c b/builtin/config.c
index de41ba50e..5677c942b 100644
--- a/builtin/config.c
+++ b/builtin/config.c
@@ -360,6 +360,9 @@ static int get_colorbool(int print)
static void check_write(void)
{
+ if (given_config_source.use_stdin)
+ die("writing to stdin is not supported");
+
if (given_config_source.blob)
die("writing config blobs is not supported");
}
@@ -472,6 +475,12 @@ int cmd_config(int argc, const char **argv, const char *prefix)
usage_with_options(builtin_config_usage, builtin_config_options);
}
+ if (given_config_source.file &&
+ !strcmp(given_config_source.file, "-")) {
+ given_config_source.file = NULL;
+ given_config_source.use_stdin = 1;
+ }
+
if (use_global_config) {
char *user_config = NULL;
char *xdg_config = NULL;
@@ -558,6 +567,8 @@ int cmd_config(int argc, const char **argv, const char *prefix)
check_argc(argc, 0, 0);
if (!given_config_source.file && nongit)
die("not in a git directory");
+ if (given_config_source.use_stdin)
+ die("editing stdin is not supported");
if (given_config_source.blob)
die("editing blobs is not supported");
git_config(git_default_config, NULL);