From: Elijah Newren Date: Sun, 05 Sep 2010 03:13:13 GMT Subject: Re: [RFC PATCH 01/15] README-sparse-clone: Add a basic writeup of my ideas for sparse clones Message-ID: In-Reply-To: On Sat, Sep 4, 2010 at 9:01 PM, Nguyen Thai Ngoc Duy wrote: > On Sun, Sep 5, 2010 at 10:13 AM, Elijah Newren wrote: >> +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.