Skip to content

Commit

Permalink
clone-pack: make it usable for partial branch cloning.
Browse files Browse the repository at this point in the history
clone-pack had some logic to accept subset of remote refs from
the command line and clone from there.  However, it was never
used in practice and its problems were not found out so far.

This commit changes the command to output the object names of
refs to the standard output instead of making a clone of the
remote repository when explicit <head> parameters are given; the
output format is the same as fetch-pack.

The traditional behaviour of cloning the whole repository by
giving no explicit <head> parameters stays the same.

Signed-off-by: Junio C Hamano <junkio@cox.net>
  • Loading branch information
Junio C Hamano committed Dec 15, 2005
1 parent 294c695 commit 31ec6ab
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 3 deletions.
6 changes: 5 additions & 1 deletion Documentation/git-clone-pack.txt
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,11 @@ OPTIONS
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.

+
Usually all the refs from existing repository are stored
under the same name in the new repository. Giving explicit
<head> arguments instead writes the object names and refs to
the standard output, just like get-fetch-pack does.

Author
------
Expand Down
13 changes: 11 additions & 2 deletions clone-pack.c
Original file line number Diff line number Diff line change
Expand Up @@ -259,8 +259,17 @@ static int clone_pack(int fd[2], int nr_match, char **match)

status = clone_without_unpack(fd);

if (!status)
write_refs(refs);
if (!status) {
if (nr_match == 0)
write_refs(refs);
else
while (refs) {
printf("%s %s\n",
sha1_to_hex(refs->old_sha1),
refs->name);
refs = refs->next;
}
}
return status;
}

Expand Down

0 comments on commit 31ec6ab

Please sign in to comment.