Skip to content

Commit

Permalink
[PATCH] Documentation: clone/fetch/upload.
Browse files Browse the repository at this point in the history
This adds documentation for 'smarter pull' family of commands.

Signed-off-by: Junio C Hamano <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
  • Loading branch information
Junio C Hamano authored and Linus Torvalds committed Jul 14, 2005
1 parent 5f40520 commit 8b3d9dc
Show file tree
Hide file tree
Showing 4 changed files with 130 additions and 7 deletions.
13 changes: 9 additions & 4 deletions Documentation/git-clone-pack.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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
-----------
Expand All @@ -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.
Expand Down
73 changes: 73 additions & 0 deletions Documentation/git-fetch-pack.txt
Original file line number Diff line number Diff line change
@@ -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 <[email protected]>

Documentation
--------------
Documentation by Junio C Hamano.

GIT
---
Part of the link:git.html[git] suite
40 changes: 40 additions & 0 deletions Documentation/git-upload-pack.txt
Original file line number Diff line number Diff line change
@@ -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 <[email protected]>

Documentation
--------------
Documentation by Junio C Hamano.

GIT
---
Part of the link:git.html[git] suite
11 changes: 8 additions & 3 deletions fetch-pack.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down Expand Up @@ -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]);
Expand Down Expand Up @@ -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;
Expand Down

0 comments on commit 8b3d9dc

Please sign in to comment.