diff options
-rw-r--r-- | Documentation/git-clone-pack.txt | 13 | ||||
-rw-r--r-- | Documentation/git-fetch-pack.txt | 73 | ||||
-rw-r--r-- | Documentation/git-upload-pack.txt | 40 | ||||
-rw-r--r-- | fetch-pack.c | 11 |
4 files changed, 130 insertions, 7 deletions
diff --git a/Documentation/git-clone-pack.txt b/Documentation/git-clone-pack.txt index 81c86e267..0dc89a907 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-upload-pack>] [<host>:]<directory> [<heads>...] +'git-clone-pack' [-q] [--exec=<git-upload-pack>] [<host>:]<directory> [<head>...] DESCRIPTION ----------- @@ -36,10 +36,15 @@ OPTIONS shells by having a lean .bashrc file (they set most of the things up in .bash_profile). -[<host>:]<directory:: - The (possibly remote) repository to clone from. +<host>:: + A remote host that houses the repository. When this + part is specified, 'git-upload-pack' is invoked via + ssh. -<heads>...:: +<directory>:: + The repository to sync from. + +<head>...:: 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 000000000..884a26bbf --- /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=<git-upload-pack>] [<host>:]<directory> [<head>...] < <commit-list> + +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=<git-upload-pack>:: + 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). + +<host>:: + A remote host that houses the repository. When this + part is specified, 'git-upload-pack' is invoked via + ssh. + +<directory>:: + The repository to sync from. + +<head>...:: + 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 <torvalds@osdl.org> + +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 000000000..be597a178 --- /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' <directory> + +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 +------- +<directory>:: + The repository to sync from. + +Author +------ +Written by Linus Torvalds <torvalds@osdl.org> + +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 0979d3d9b..9b1bc5224 100644 --- a/fetch-pack.c +++ b/fetch-pack.c @@ -3,7 +3,8 @@ #include "pkt-line.h" #include <sys/wait.h> -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; |