With the last few patches I just posted it is now possible to receive (fetch) packs, validate them on the fly, complete them if they are thin packs, and store them directly without exploding them into loose objects. There are advantages and inconvenients to both methods, so I think this should become a configuration option and/or even a command line argument to git-fetch. I think there are many more advantages to keeping packs packed hence I think using index-pack should become the default. But I'm a bit tired to play with it and the final integration is for someone else to do. I've tested it lightly using the extremely crude patch below to hook it in the fetch process. Have fun! diff --git a/fetch-clone.c b/fetch-clone.c index 76b99af..28796c3 100644 --- a/fetch-clone.c +++ b/fetch-clone.c @@ -142,7 +142,8 @@ int receive_unpack_pack(int xd[2], const dup2(fd[0], 0); close(fd[0]); close(fd[1]); - execl_git_cmd("unpack-objects", quiet ? "-q" : NULL, NULL); + execl_git_cmd("index-pack", "--stdin", "--fix-thin", + quiet ? NULL : "-v", NULL); die("git-unpack-objects exec failed"); } close(fd[0]); diff --git a/receive-pack.c b/receive-pack.c index 1fcf3a9..7f6dc49 100644 --- a/receive-pack.c +++ b/receive-pack.c @@ -7,7 +7,7 @@ static const char receive_pack_usage[] = "git-receive-pack <git-dir>"; -static const char *unpacker[] = { "unpack-objects", NULL }; +static const char *unpacker[] = { "index-pack", "-v", "--stdin", "--fix-thin", NULL }; static int report_status; - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html