Re: [RFC PATCH 01/15] README-sparse-clone: Add a basic writeup of my ideas for sparse clones
From: Elijah Newren <hidden>
Date: 2016-06-15 22:49:29
On Sat, Sep 4, 2010 at 9:01 PM, Nguyen Thai Ngoc Duy [off-list ref] wrote:
On Sun, Sep 5, 2010 at 10:13 AM, Elijah Newren [off-list ref] wrote:quoted
+To ensure minimum necessary connectivity, we also download basic +information from otherwise excluded commits + * parents of these commits + * trees matching the specified sparse path(s) +but, for security and space reasons, do not download + * author + * author date + * committer + * committer date + * log message +Such commits are still considered "missing" (see item I4 for more +details about how we handle "missing" commits).Just an observation. When I ran pack-objects with irrelevant commits removed (i.e. try_to_simplify_commit) on Documentation/, I got a 6MB pack. When I ran it without commit simplification, I got 16MB pack. That's 10MB larger.
Hmm. I get 22MB pack for a full clone of git.git and 13 MB for a sparse clone with Documentation/; that's including all commits too. I wonder why our numbers differ by 3 MB. Weird.
Now I don't how much of that 10MB share is commit messages, authors, committers and trees but I suspect trees take a large part in it. Maybe you can just fake the trees in those fake commits as well, to avoid downloading more trees.
I originally planned to do that, but that makes working with tags and branches difficult. For example, documenters could clone a repository but be unable to make new commits on top of maint or master since we probably wouldn't have trees for the tips of those branches. So I really think trees are needed. Of course, for someone making a sparse clone of "just" the Documentation directory will need the toplevel trees, but they won't need trees under t/, for example. So they do get some savings.