From 8b3d9dc0e21eb8c7d90173acb330932569e6f52c Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Thu, 14 Jul 2005 00:08:37 -0700 Subject: [PATCH] [PATCH] Documentation: clone/fetch/upload. This adds documentation for 'smarter pull' family of commands. Signed-off-by: Junio C Hamano Signed-off-by: Linus Torvalds --- Documentation/git-clone-pack.txt | 13 ++++--- Documentation/git-fetch-pack.txt | 73 +++++++++++++++++++++++++++++++++++++++ Documentation/git-upload-pack.txt | 40 +++++++++++++++++++++ fetch-pack.c | 11 ++++-- 4 files changed, 130 insertions(+), 7 deletions(-) create mode 100644 Documentation/git-fetch-pack.txt create mode 100644 Documentation/git-upload-pack.txt diff --git a/Documentation/git-clone-pack.txt b/Documentation/git-clone-pack.txt index 81c86e26..0dc89a90 100644 --- a/Documentation/git-clone-pack.txt +++ b/Documentation/git-clone-pack.txt @@ -9,7 +9,7 @@ git-clone-pack - Clones a repository by receiving packed objects. SYNOPSIS -------- -'git-clone-pack' [-q] [--exec=] [:] [...] +'git-clone-pack' [-q] [--exec=] [:] [...] DESCRIPTION ----------- @@ -36,10 +36,15 @@ OPTIONS shells by having a lean .bashrc file (they set most of the things up in .bash_profile). -[:]:: + A remote host that houses the repository. When this + part is specified, 'git-upload-pack' is invoked via + ssh. -...:: +:: + The repository to sync from. + +...:: The heads to update. This is relative to $GIT_DIR (e.g. "HEAD", "refs/heads/master"). When unspecified, all heads are updated to match the remote repository. diff --git a/Documentation/git-fetch-pack.txt b/Documentation/git-fetch-pack.txt new file mode 100644 index 00000000..884a26bb --- /dev/null +++ b/Documentation/git-fetch-pack.txt @@ -0,0 +1,73 @@ +git-fetch-pack(1) +================= +v0.1, July 2005 + +NAME +---- +git-fetch-pack - Receive missing objects from another repository. + + +SYNOPSIS +-------- +git-fetch-pack [-q] [--exec=] [:] [...] < + +DESCRIPTION +----------- +Invokes 'git-upload-pack' on a potentially remote repository, +and asks it to send objects missing from this repository, to +update the named heads. The list of commits available locally +is fed from the standard input, to be sent to 'git-upload-pack' +running on the other end. + +This command can be used only when the local side has a common +(ancestor) commit with the remote head that is being pulled +from. Use 'git-clone-pack' for that. + + +OPTIONS +------- +-q:: + Pass '-q' flag to 'git-unpack-objects'; this makes the + cloning process less verbose. + +--exec=:: + Use this to specify the path to 'git-upload-pack' on the + remote side, if is not found on your $PATH. + Installations of sshd ignores the user's environment + setup scripts for login shells (e.g. .bash_profile) and + your privately installed GIT may not be found on the system + default $PATH. Another workaround suggested is to set + up your $PATH in ".bashrc", but this flag is for people + who do not want to pay the overhead for non-interactive + shells by having a lean .bashrc file (they set most of + the things up in .bash_profile). + +:: + A remote host that houses the repository. When this + part is specified, 'git-upload-pack' is invoked via + ssh. + +:: + The repository to sync from. + +...:: + The remote heads to update from. This is relative to + $GIT_DIR (e.g. "HEAD", "refs/heads/master"). When + unspecified, update from all heads the remote side has. + + However the program refuses to work if more than one + remote head matches the specified heads. I am not sure + what this means... Help!!!!! + + +Author +------ +Written by Linus Torvalds + +Documentation +-------------- +Documentation by Junio C Hamano. + +GIT +--- +Part of the link:git.html[git] suite diff --git a/Documentation/git-upload-pack.txt b/Documentation/git-upload-pack.txt new file mode 100644 index 00000000..be597a17 --- /dev/null +++ b/Documentation/git-upload-pack.txt @@ -0,0 +1,40 @@ +git-upload-pack(1) +================== +v0.1, July 2005 + +NAME +---- +git-upload-pack - Send missing objects packed. + + +SYNOPSIS +-------- +'git-upload-pack' + +DESCRIPTION +----------- +Invoked by 'git-clone-pack' and/or 'git-fetch-pack', learns what +objects the other side is missing, and sends them after packing. + +This command is usually not invoked directly by the end user. +The UI for the protocol is on the 'git-fetch-pack' side, and the +program pair is meant to be used to pull updates from a remote +repository. For push operations, see 'git-send-pack'. + + +OPTIONS +------- +:: + The repository to sync from. + +Author +------ +Written by Linus Torvalds + +Documentation +-------------- +Documentation by Junio C Hamano. + +GIT +--- +Part of the link:git.html[git] suite diff --git a/fetch-pack.c b/fetch-pack.c index 0979d3d9..9b1bc522 100644 --- a/fetch-pack.c +++ b/fetch-pack.c @@ -3,7 +3,8 @@ #include "pkt-line.h" #include -static const char fetch_pack_usage[] = "git-fetch-pack [host:]directory [heads]* < mycommitlist"; +static int quiet; +static const char fetch_pack_usage[] = "git-fetch-pack [-q] [--exec=upload-pack] [host:]directory [heads]* < mycommitlist"; static const char *exec = "git-upload-pack"; static int find_common(int fd[2], unsigned char *result_sha1, unsigned char *remote) @@ -98,7 +99,8 @@ static int fetch_pack(int fd[2], int nr_match, char **match) dup2(fd[0], 0); close(fd[0]); close(fd[1]); - execlp("git-unpack-objects", "git-unpack-objects", NULL); + execlp("git-unpack-objects", "git-unpack-objects", + quiet ? "-q" : NULL, NULL); die("git-unpack-objects exec failed"); } close(fd[0]); @@ -134,7 +136,10 @@ int main(int argc, char **argv) char *arg = argv[i]; if (*arg == '-') { - /* Arguments go here */ + if (!strncmp("--exec=", arg, 7)) { + exec = arg + 7; + continue; + } usage(fetch_pack_usage); } dest = arg; -- 2.11.0