diff options
author | Uwe Kleine-König <zeisberg@informatik.uni-freiburg.de> | 2007-01-19 13:46:16 +0100 |
---|---|---|
committer | Junio C Hamano <junkio@cox.net> | 2007-01-19 17:54:33 -0800 |
commit | 060aafc11fb6140f1b33326f03e70dad5762a624 (patch) | |
tree | 948eefea048d8d12e62a35cda87222140dd52a30 | |
parent | 18bd8821cace2f830e34574df6df30e072d0ed40 (diff) | |
download | git-060aafc11fb6140f1b33326f03e70dad5762a624.tar.gz git-060aafc11fb6140f1b33326f03e70dad5762a624.tar.xz |
make --exec=... option to git-push configurable
Having to specify git push --exec=... is annoying if you cannot have
git-receivepack in your PATH on the remote side (or don't want to).
This introduces the config item remote.<name>.receivepack to override
the default value (which is "git-receive-pack").
Signed-off-by: Uwe Kleine-König <zeisberg@informatik.uni-freiburg.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>
-rw-r--r-- | Documentation/config.txt | 4 | ||||
-rw-r--r-- | builtin-push.c | 11 |
2 files changed, 15 insertions, 0 deletions
diff --git a/Documentation/config.txt b/Documentation/config.txt index da7fde56b..f1f409d24 100644 --- a/Documentation/config.txt +++ b/Documentation/config.txt @@ -356,6 +356,10 @@ remote.<name>.push:: The default set of "refspec" for gitlink:git-push[1]. See gitlink:git-push[1]. +remote.<name>.receivepack:: + The default program to execute on the remote side when pulling. See + option \--exec of gitlink:git-push[1]. + repack.usedeltabaseoffset:: Allow gitlink:git-repack[1] to create packs that uses delta-base offset. Defaults to false. diff --git a/builtin-push.c b/builtin-push.c index ba7981f5b..6b3c03b8a 100644 --- a/builtin-push.c +++ b/builtin-push.c @@ -143,6 +143,7 @@ static const char *config_repo; static int config_repo_len; static int config_current_uri; static int config_get_refspecs; +static int config_get_receivepack; static int get_remote_config(const char* key, const char* value) { @@ -157,6 +158,15 @@ static int get_remote_config(const char* key, const char* value) else if (config_get_refspecs && !strcmp(key + 7 + config_repo_len, ".push")) add_refspec(xstrdup(value)); + else if (config_get_receivepack && + !strcmp(key + 7 + config_repo_len, ".receivepack")) { + if (!execute) { + char *ex = xmalloc(strlen(value) + 8); + sprintf(ex, "--exec=%s", value); + execute = ex; + } else + error("more than one receivepack given, using the first"); + } } return 0; } @@ -168,6 +178,7 @@ static int get_config_remotes_uri(const char *repo, const char *uri[MAX_URI]) config_current_uri = 0; config_uri = uri; config_get_refspecs = !(refspec_nr || all || tags); + config_get_receivepack = (execute == NULL); git_config(get_remote_config); return config_current_uri; |