diff --git a/Documentation/git-push.txt b/Documentation/git-push.txt index 7a2e503a4e6739..f8cc2b5432b448 100644 --- a/Documentation/git-push.txt +++ b/Documentation/git-push.txt @@ -8,7 +8,7 @@ git-push - Update remote refs along with associated objects SYNOPSIS -------- -'git-push' [--all] [--tags] [--exec=] [--repo=all] [-f | --force] [-v] [ ...] +'git-push' [--all] [--tags] [--receive-pack=] [--repo=all] [-f | --force] [-v] [ ...] DESCRIPTION ----------- @@ -67,12 +67,15 @@ the remote repository. addition to refspecs explicitly listed on the command line. -\--exec:: +\--receive-pack=:: Path to the 'git-receive-pack' program on the remote end. Sometimes useful when pushing to a remote repository over ssh, and you do not have the program in a directory on the default $PATH. +\--exec=:: + Same as \--receive-pack=. + -f, \--force:: Usually, the command refuses to update a remote ref that is not a descendant of the local ref used to overwrite it. diff --git a/Documentation/git-send-pack.txt b/Documentation/git-send-pack.txt index dee43a997c3fbb..2f6267ce6048a2 100644 --- a/Documentation/git-send-pack.txt +++ b/Documentation/git-send-pack.txt @@ -8,7 +8,7 @@ git-send-pack - Push objects over git protocol to another reposiotory SYNOPSIS -------- -'git-send-pack' [--all] [--force] [--exec=] [--verbose] [--thin] [:] [...] +'git-send-pack' [--all] [--force] [--receive-pack=] [--verbose] [--thin] [:] [...] DESCRIPTION ----------- @@ -21,12 +21,15 @@ updates it from the current repository, sending named refs. OPTIONS ------- -\--exec=:: +\--receive-pack=:: Path to the 'git-receive-pack' program on the remote end. Sometimes useful when pushing to a remote repository over ssh, and you do not have the program in a directory on the default $PATH. +\--exec=:: + Same as \--receive-pack=. + \--all:: Instead of explicitly specifying which refs to update, update all refs that locally exist. diff --git a/builtin-push.c b/builtin-push.c index 6b3c03b8a6b8bb..5f4d7d34d35da3 100644 --- a/builtin-push.c +++ b/builtin-push.c @@ -8,10 +8,10 @@ #define MAX_URI (16) -static const char push_usage[] = "git-push [--all] [--tags] [--exec=] [--repo=all] [-f | --force] [-v] [ ...]"; +static const char push_usage[] = "git-push [--all] [--tags] [--receive-pack=] [--repo=all] [-f | --force] [-v] [ ...]"; static int all, tags, force, thin = 1, verbose; -static const char *execute; +static const char *receivepack; #define BUF_SIZE (2084) static char buffer[BUF_SIZE]; @@ -160,10 +160,10 @@ static int get_remote_config(const char* key, const char* 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; + if (!receivepack) { + char *rp = xmalloc(strlen(value) + 16); + sprintf(rp, "--receive-pack=%s", value); + receivepack = rp; } else error("more than one receivepack given, using the first"); } @@ -178,7 +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); + config_get_receivepack = (receivepack == NULL); git_config(get_remote_config); return config_current_uri; @@ -263,8 +263,8 @@ static int do_push(const char *repo) argv[argc++] = "--all"; if (force) argv[argc++] = "--force"; - if (execute) - argv[argc++] = execute; + if (receivepack) + argv[argc++] = receivepack; common_argc = argc; for (i = 0; i < n; i++) { @@ -347,8 +347,12 @@ int cmd_push(int argc, const char **argv, const char *prefix) thin = 0; continue; } + if (!strncmp(arg, "--receive-pack=", 15)) { + receivepack = arg; + continue; + } if (!strncmp(arg, "--exec=", 7)) { - execute = arg; + receivepack = arg; continue; } usage(push_usage); diff --git a/send-pack.c b/send-pack.c index ec2c1089b289fc..cd478dd82fdc08 100644 --- a/send-pack.c +++ b/send-pack.c @@ -6,9 +6,9 @@ #include "exec_cmd.h" static const char send_pack_usage[] = -"git-send-pack [--all] [--force] [--exec=] [--verbose] [--thin] [:] [...]\n" +"git-send-pack [--all] [--force] [--receive-pack=] [--verbose] [--thin] [:] [...]\n" " --all and explicit specification are mutually exclusive."; -static const char *exec = "git-receive-pack"; +static const char *receivepack = "git-receive-pack"; static int verbose; static int send_all; static int force_update; @@ -377,8 +377,12 @@ int main(int argc, char **argv) char *arg = *argv; if (*arg == '-') { + if (!strncmp(arg, "--receive-pack=", 15)) { + receivepack = arg + 15; + continue; + } if (!strncmp(arg, "--exec=", 7)) { - exec = arg + 7; + receivepack = arg + 7; continue; } if (!strcmp(arg, "--all")) { @@ -413,7 +417,7 @@ int main(int argc, char **argv) usage(send_pack_usage); verify_remote_names(nr_heads, heads); - pid = git_connect(fd, dest, exec); + pid = git_connect(fd, dest, receivepack); if (pid < 0) return 1; ret = send_pack(fd[0], fd[1], nr_heads, heads);