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>
This commit is contained in:
Uwe Kleine-König 2007-01-19 13:46:16 +01:00 committed by Junio C Hamano
parent 18bd8821ca
commit 060aafc11f
2 changed files with 15 additions and 0 deletions

View File

@ -356,6 +356,10 @@ remote.<name>.push::
The default set of "refspec" for gitlink:git-push[1]. See The default set of "refspec" for gitlink:git-push[1]. See
gitlink:git-push[1]. 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:: repack.usedeltabaseoffset::
Allow gitlink:git-repack[1] to create packs that uses Allow gitlink:git-repack[1] to create packs that uses
delta-base offset. Defaults to false. delta-base offset. Defaults to false.

View File

@ -143,6 +143,7 @@ static const char *config_repo;
static int config_repo_len; static int config_repo_len;
static int config_current_uri; static int config_current_uri;
static int config_get_refspecs; static int config_get_refspecs;
static int config_get_receivepack;
static int get_remote_config(const char* key, const char* value) 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 && else if (config_get_refspecs &&
!strcmp(key + 7 + config_repo_len, ".push")) !strcmp(key + 7 + config_repo_len, ".push"))
add_refspec(xstrdup(value)); 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; 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_current_uri = 0;
config_uri = uri; config_uri = uri;
config_get_refspecs = !(refspec_nr || all || tags); config_get_refspecs = !(refspec_nr || all || tags);
config_get_receivepack = (execute == NULL);
git_config(get_remote_config); git_config(get_remote_config);
return config_current_uri; return config_current_uri;