diff a/Documentation/git-rpull.txt b/Documentation/git-rpull.txt --- a/Documentation/git-rpull.txt +++ /dev/null @@ -1,50 +0,0 @@ -git-rpull(1) -============ -v0.1, May 2005 - -NAME ----- -git-rpull - Pulls from a remote repository over ssh connection - - - -SYNOPSIS --------- -'git-rpull' [-c] [-t] [-a] [-d] [-v] [--recover] commit-id url - -DESCRIPTION ------------ -Pulls from a remote repository over ssh connection, invoking git-rpush on -the other end. - -OPTIONS -------- --c:: - Get the commit objects. --t:: - Get trees associated with the commit objects. --a:: - Get all the objects. --d:: - Do not check for delta base objects (use this option - only when you know the remote repository is not - deltified). ---recover:: - Check dependency of deltified object more carefully than - usual, to recover after earlier pull that was interrupted. --v:: - Report what is downloaded. - - -Author ------- -Written by Linus Torvalds <torvalds@osdl.org> - -Documentation --------------- -Documentation by David Greaves, Junio C Hamano and the git-list <git@vger.kernel.org>. - -GIT ---- -Part of the link:git.html[git] suite - diff a/Documentation/git-rpush.txt b/Documentation/git-rpush.txt --- a/Documentation/git-rpush.txt +++ /dev/null @@ -1,30 +0,0 @@ -git-rpush(1) -============ -v0.1, May 2005 - -NAME ----- -git-rpush - Helper "server-side" program used by git-rpull - - -SYNOPSIS --------- -'git-rpush' - -DESCRIPTION ------------ -Helper "server-side" program used by git-rpull. - - -Author ------- -Written by Linus Torvalds <torvalds@osdl.org> - -Documentation --------------- -Documentation by David Greaves, Junio C Hamano and the git-list <git@vger.kernel.org>. - -GIT ---- -Part of the link:git.html[git] suite - diff a/Documentation/git-ssh-pull.txt b/Documentation/git-ssh-pull.txt --- /dev/null +++ b/Documentation/git-ssh-pull.txt @@ -0,0 +1,50 @@ +git-ssh-pull(1) +=============== +v0.1, May 2005 + +NAME +---- +git-ssh-pull - Pulls from a remote repository over ssh connection + + + +SYNOPSIS +-------- +'git-ssh-pull' [-c] [-t] [-a] [-d] [-v] [--recover] commit-id url + +DESCRIPTION +----------- +Pulls from a remote repository over ssh connection, invoking git-ssh-push +on the other end. + +OPTIONS +------- +-c:: + Get the commit objects. +-t:: + Get trees associated with the commit objects. +-a:: + Get all the objects. +-d:: + Do not check for delta base objects (use this option + only when you know the remote repository is not + deltified). +--recover:: + Check dependency of deltified object more carefully than + usual, to recover after earlier pull that was interrupted. +-v:: + Report what is downloaded. + + +Author +------ +Written by Linus Torvalds <torvalds@osdl.org> + +Documentation +-------------- +Documentation by David Greaves, Junio C Hamano and the git-list <git@vger.kernel.org>. + +GIT +--- +Part of the link:git.html[git] suite + diff a/Documentation/git-ssh-push.txt b/Documentation/git-ssh-push.txt --- /dev/null +++ b/Documentation/git-ssh-push.txt @@ -0,0 +1,30 @@ +git-ssh-push(1) +=============== +v0.1, May 2005 + +NAME +---- +git-ssh-push - Helper "server-side" program used by git-ssh-pull + + +SYNOPSIS +-------- +'git-ssh-push' + +DESCRIPTION +----------- +Helper "server-side" program used by git-ssh-pull. + + +Author +------ +Written by Linus Torvalds <torvalds@osdl.org> + +Documentation +-------------- +Documentation by David Greaves, Junio C Hamano and the git-list <git@vger.kernel.org>. + +GIT +--- +Part of the link:git.html[git] suite + diff a/Documentation/git.txt b/Documentation/git.txt --- a/Documentation/git.txt +++ b/Documentation/git.txt @@ -148,7 +148,7 @@ link:git-resolve-script.html[git-resolve link:git-tag-script.html[git-tag-script]:: An example script to create a tag object signed with GPG -link:git-rpull.html[git-rpull]:: +link:git-ssh-pull.html[git-ssh-pull]:: Pulls from a remote repository over ssh connection Interrogators: @@ -156,8 +156,8 @@ Interrogators: link:git-diff-helper.html[git-diff-helper]:: Generates patch format output for git-diff-* -link:git-rpush.html[git-rpush]:: - Helper "server-side" program used by git-rpull +link:git-ssh-push.html[git-ssh-push]:: + Helper "server-side" program used by git-ssh-pull diff a/Makefile b/Makefile --- a/Makefile +++ b/Makefile @@ -30,7 +30,7 @@ PROG= git-update-index git-diff-files git-checkout-cache git-diff-tree git-rev-tree git-ls-files \ git-check-files git-ls-tree git-merge-base git-merge-cache \ git-unpack-file git-export git-diff-cache git-convert-cache \ - git-http-pull git-rpush git-rpull git-rev-list git-mktag \ + git-http-pull git-ssh-push git-ssh-pull git-rev-list git-mktag \ git-diff-helper git-tar-tree git-local-pull git-write-blob \ git-get-tar-commit-id git-mkdelta git-apply git-stripspace @@ -105,8 +105,8 @@ git-diff-cache: diff-cache.c git-convert-cache: convert-cache.c git-http-pull: http-pull.c pull.c git-local-pull: local-pull.c pull.c -git-rpush: rsh.c -git-rpull: rsh.c pull.c +git-ssh-push: rsh.c +git-ssh-pull: rsh.c pull.c git-rev-list: rev-list.c git-mktag: mktag.c git-diff-helper: diff-helper.c diff a/rpull.c b/rpull.c --- a/rpull.c +++ /dev/null @@ -1,83 +0,0 @@ -#include "cache.h" -#include "commit.h" -#include "rsh.h" -#include "pull.h" - -static int fd_in; -static int fd_out; - -static unsigned char remote_version = 0; -static unsigned char local_version = 1; - -int fetch(unsigned char *sha1) -{ - int ret; - signed char remote; - char type = 'o'; - if (has_sha1_file(sha1)) - return 0; - write(fd_out, &type, 1); - write(fd_out, sha1, 20); - if (read(fd_in, &remote, 1) < 1) - return -1; - if (remote < 0) - return remote; - ret = write_sha1_from_fd(sha1, fd_in); - if (!ret) - pull_say("got %s\n", sha1_to_hex(sha1)); - return ret; -} - -int get_version(void) -{ - char type = 'v'; - write(fd_out, &type, 1); - write(fd_out, &local_version, 1); - if (read(fd_in, &remote_version, 1) < 1) { - return error("Couldn't read version from remote end"); - } - return 0; -} - -int main(int argc, char **argv) -{ - char *commit_id; - char *url; - int arg = 1; - - while (arg < argc && argv[arg][0] == '-') { - if (argv[arg][1] == 't') { - get_tree = 1; - } else if (argv[arg][1] == 'c') { - get_history = 1; - } else if (argv[arg][1] == 'd') { - get_delta = 0; - } else if (!strcmp(argv[arg], "--recover")) { - get_delta = 2; - } else if (argv[arg][1] == 'a') { - get_all = 1; - get_tree = 1; - get_history = 1; - } else if (argv[arg][1] == 'v') { - get_verbosely = 1; - } - arg++; - } - if (argc < arg + 2) { - usage("git-rpull [-c] [-t] [-a] [-v] [-d] [--recover] commit-id url"); - return 1; - } - commit_id = argv[arg]; - url = argv[arg + 1]; - - if (setup_connection(&fd_in, &fd_out, "git-rpush", url, arg, argv + 1)) - return 1; - - if (get_version()) - return 1; - - if (pull(commit_id)) - return 1; - - return 0; -} diff a/rpush.c b/rpush.c --- a/rpush.c +++ /dev/null @@ -1,104 +0,0 @@ -#include "cache.h" -#include "rsh.h" -#include <sys/socket.h> -#include <errno.h> - -unsigned char local_version = 1; -unsigned char remote_version = 0; - -int serve_object(int fd_in, int fd_out) { - ssize_t size; - int posn = 0; - char sha1[20]; - unsigned long objsize; - void *buf; - signed char remote; - do { - size = read(fd_in, sha1 + posn, 20 - posn); - if (size < 0) { - perror("git-rpush: read "); - return -1; - } - if (!size) - return -1; - posn += size; - } while (posn < 20); - - /* fprintf(stderr, "Serving %s\n", sha1_to_hex(sha1)); */ - remote = 0; - - buf = map_sha1_file(sha1, &objsize); - - if (!buf) { - fprintf(stderr, "git-rpush: could not find %s\n", - sha1_to_hex(sha1)); - remote = -1; - } - - write(fd_out, &remote, 1); - - if (remote < 0) - return 0; - - posn = 0; - do { - size = write(fd_out, buf + posn, objsize - posn); - if (size <= 0) { - if (!size) { - fprintf(stderr, "git-rpush: write closed"); - } else { - perror("git-rpush: write "); - } - return -1; - } - posn += size; - } while (posn < objsize); - return 0; -} - -int serve_version(int fd_in, int fd_out) -{ - if (read(fd_in, &remote_version, 1) < 1) - return -1; - write(fd_out, &local_version, 1); - return 0; -} - -void service(int fd_in, int fd_out) { - char type; - int retval; - do { - retval = read(fd_in, &type, 1); - if (retval < 1) { - if (retval < 0) - perror("rpush: read "); - return; - } - if (type == 'v' && serve_version(fd_in, fd_out)) - return; - if (type == 'o' && serve_object(fd_in, fd_out)) - return; - } while (1); -} - -int main(int argc, char **argv) -{ - int arg = 1; - char *commit_id; - char *url; - int fd_in, fd_out; - while (arg < argc && argv[arg][0] == '-') { - arg++; - } - if (argc < arg + 2) { - usage("git-rpush [-c] [-t] [-a] commit-id url"); - return 1; - } - commit_id = argv[arg]; - url = argv[arg + 1]; - if (setup_connection(&fd_in, &fd_out, "git-rpull", url, arg, argv + 1)) - return 1; - - service(fd_in, fd_out); - return 0; -} diff a/ssh-pull.c b/ssh-pull.c --- /dev/null +++ b/ssh-pull.c @@ -0,0 +1,83 @@ +#include "cache.h" +#include "commit.h" +#include "rsh.h" +#include "pull.h" + +static int fd_in; +static int fd_out; + +static unsigned char remote_version = 0; +static unsigned char local_version = 1; + +int fetch(unsigned char *sha1) +{ + int ret; + signed char remote; + char type = 'o'; + if (has_sha1_file(sha1)) + return 0; + write(fd_out, &type, 1); + write(fd_out, sha1, 20); + if (read(fd_in, &remote, 1) < 1) + return -1; + if (remote < 0) + return remote; + ret = write_sha1_from_fd(sha1, fd_in); + if (!ret) + pull_say("got %s\n", sha1_to_hex(sha1)); + return ret; +} + +int get_version(void) +{ + char type = 'v'; + write(fd_out, &type, 1); + write(fd_out, &local_version, 1); + if (read(fd_in, &remote_version, 1) < 1) { + return error("Couldn't read version from remote end"); + } + return 0; +} + +int main(int argc, char **argv) +{ + char *commit_id; + char *url; + int arg = 1; + + while (arg < argc && argv[arg][0] == '-') { + if (argv[arg][1] == 't') { + get_tree = 1; + } else if (argv[arg][1] == 'c') { + get_history = 1; + } else if (argv[arg][1] == 'd') { + get_delta = 0; + } else if (!strcmp(argv[arg], "--recover")) { + get_delta = 2; + } else if (argv[arg][1] == 'a') { + get_all = 1; + get_tree = 1; + get_history = 1; + } else if (argv[arg][1] == 'v') { + get_verbosely = 1; + } + arg++; + } + if (argc < arg + 2) { + usage("git-ssh-pull [-c] [-t] [-a] [-v] [-d] [--recover] commit-id url"); + return 1; + } + commit_id = argv[arg]; + url = argv[arg + 1]; + + if (setup_connection(&fd_in, &fd_out, "git-ssh-push", url, arg, argv + 1)) + return 1; + + if (get_version()) + return 1; + + if (pull(commit_id)) + return 1; + + return 0; +} diff a/ssh-push.c b/ssh-push.c --- /dev/null +++ b/ssh-push.c @@ -0,0 +1,104 @@ +#include "cache.h" +#include "rsh.h" +#include <sys/socket.h> +#include <errno.h> + +unsigned char local_version = 1; +unsigned char remote_version = 0; + +int serve_object(int fd_in, int fd_out) { + ssize_t size; + int posn = 0; + char sha1[20]; + unsigned long objsize; + void *buf; + signed char remote; + do { + size = read(fd_in, sha1 + posn, 20 - posn); + if (size < 0) { + perror("git-ssh-push: read "); + return -1; + } + if (!size) + return -1; + posn += size; + } while (posn < 20); + + /* fprintf(stderr, "Serving %s\n", sha1_to_hex(sha1)); */ + remote = 0; + + buf = map_sha1_file(sha1, &objsize); + + if (!buf) { + fprintf(stderr, "git-ssh-push: could not find %s\n", + sha1_to_hex(sha1)); + remote = -1; + } + + write(fd_out, &remote, 1); + + if (remote < 0) + return 0; + + posn = 0; + do { + size = write(fd_out, buf + posn, objsize - posn); + if (size <= 0) { + if (!size) { + fprintf(stderr, "git-ssh-push: write closed"); + } else { + perror("git-ssh-push: write "); + } + return -1; + } + posn += size; + } while (posn < objsize); + return 0; +} + +int serve_version(int fd_in, int fd_out) +{ + if (read(fd_in, &remote_version, 1) < 1) + return -1; + write(fd_out, &local_version, 1); + return 0; +} + +void service(int fd_in, int fd_out) { + char type; + int retval; + do { + retval = read(fd_in, &type, 1); + if (retval < 1) { + if (retval < 0) + perror("git-ssh-push: read "); + return; + } + if (type == 'v' && serve_version(fd_in, fd_out)) + return; + if (type == 'o' && serve_object(fd_in, fd_out)) + return; + } while (1); +} + +int main(int argc, char **argv) +{ + int arg = 1; + char *commit_id; + char *url; + int fd_in, fd_out; + while (arg < argc && argv[arg][0] == '-') { + arg++; + } + if (argc < arg + 2) { + usage("git-ssh-push [-c] [-t] [-a] commit-id url"); + return 1; + } + commit_id = argv[arg]; + url = argv[arg + 1]; + if (setup_connection(&fd_in, &fd_out, "git-ssh-pull", url, arg, argv + 1)) + return 1; + + service(fd_in, fd_out); + return 0; +}