diff options
-rw-r--r-- | Documentation/git-push.txt | 7 | ||||
-rw-r--r-- | Documentation/git-send-pack.txt | 7 | ||||
-rw-r--r-- | builtin-push.c | 24 | ||||
-rw-r--r-- | send-pack.c | 12 |
4 files changed, 32 insertions, 18 deletions
diff --git a/Documentation/git-push.txt b/Documentation/git-push.txt index 7a2e503a4..f8cc2b543 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=<git-receive-pack>] [--repo=all] [-f | --force] [-v] [<repository> <refspec>...] +'git-push' [--all] [--tags] [--receive-pack=<git-receive-pack>] [--repo=all] [-f | --force] [-v] [<repository> <refspec>...] DESCRIPTION ----------- @@ -67,12 +67,15 @@ the remote repository. addition to refspecs explicitly listed on the command line. -\--exec:: +\--receive-pack=<git-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=<git-receive-pack>:: + Same as \--receive-pack=<git-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 dee43a997..2f6267ce6 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=<git-receive-pack>] [--verbose] [--thin] [<host>:]<directory> [<ref>...] +'git-send-pack' [--all] [--force] [--receive-pack=<git-receive-pack>] [--verbose] [--thin] [<host>:]<directory> [<ref>...] DESCRIPTION ----------- @@ -21,12 +21,15 @@ updates it from the current repository, sending named refs. OPTIONS ------- -\--exec=<git-receive-pack>:: +\--receive-pack=<git-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=<git-receive-pack>:: + Same as \--receive-pack=<git-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 6b3c03b8a..5f4d7d34d 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=<git-receive-pack>] [--repo=all] [-f | --force] [-v] [<repository> <refspec>...]"; +static const char push_usage[] = "git-push [--all] [--tags] [--receive-pack=<git-receive-pack>] [--repo=all] [-f | --force] [-v] [<repository> <refspec>...]"; 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 ec2c1089b..cd478dd82 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=<git-receive-pack>] [--verbose] [--thin] [<host>:]<directory> [<ref>...]\n" +"git-send-pack [--all] [--force] [--receive-pack=<git-receive-pack>] [--verbose] [--thin] [<host>:]<directory> [<ref>...]\n" " --all and explicit <ref> 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); |