From: Junio C Hamano Date: Thu, 13 Oct 2005 01:12:27 +0000 (-0700) Subject: clone-pack: new option --keep tells it not to explode the pack. X-Git-Tag: v0.99.9~137 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=64c381bf740a0a698fe7556fbb346b700b934f7c;p=git.git clone-pack: new option --keep tells it not to explode the pack. With new option --keep, or a configuration item clone.keeppack (we need a better name, or start allowing dash,"clone.keep-pack"), the packed data downloaded while cloning is saved as a pack in .git/objects/pack/ locally, with index generated for it with git-index-pack. Signed-off-by: Junio C Hamano Signed-off-by: Junio C Hamano --- diff --git a/Documentation/git-clone-pack.txt b/Documentation/git-clone-pack.txt index 87c0e460d..b58165a5f 100644 --- a/Documentation/git-clone-pack.txt +++ b/Documentation/git-clone-pack.txt @@ -8,7 +8,7 @@ git-clone-pack - Clones a repository by receiving packed objects. SYNOPSIS -------- -'git-clone-pack' [-q] [--exec=] [:] [...] +'git-clone-pack' [-q] [--keep] [--exec=] [:] [...] DESCRIPTION ----------- @@ -23,6 +23,11 @@ OPTIONS Pass '-q' flag to 'git-unpack-objects'; this makes the cloning process less verbose. +--keep:: + Do not invoke 'git-unpack-objects' on received data, but + create a single packfile out of it instead, and store it + in the object database. + --exec=:: Use this to specify the path to 'git-upload-pack' on the remote side, if it is not found on your $PATH. diff --git a/clone-pack.c b/clone-pack.c index 9567900aa..9a3371e1b 100644 --- a/clone-pack.c +++ b/clone-pack.c @@ -5,7 +5,8 @@ static int quiet; static int keep_pack; -static const char clone_pack_usage[] = "git-clone-pack [-q] [--exec=] [:] []*"; +static const char clone_pack_usage[] = +"git-clone-pack [-q] [--keep] [--exec=] [:] []*"; static const char *exec = "git-upload-pack"; static void clone_handshake(int fd[2], struct ref *ref) @@ -221,9 +222,11 @@ static int finish_pack(const char *pack_tmp_name) snprintf(final, sizeof(final), "%s/pack/pack-%s.pack", get_object_directory(), hash); move_temp_to_file(pack_tmp_name, final); + chmod(final, 0444); snprintf(final, sizeof(final), "%s/pack/pack-%s.idx", get_object_directory(), hash); move_temp_to_file(idx, final); + chmod(final, 0444); return 0; error_die: