Re: Change set based shallow clone
- From
Jon Smirl <jonsmirl@gmail.com>
- Date
- Sep 7, 2006, 20:41 UTC
- Message-ID
- <9e4733910609071341u7e430214j71ddcbefa26810ca@mail.gmail.com>
- In-Reply-To
- <edpuut$dns$1@sea.gmane.org>
On 9/7/06, Jakub Narebski <jnareb@gmail.com> wrote:
> I don't understand. Git is _not_ patchset based (like GNU Arch, or
I meant change set to refer to a commit plus trees plus blobs that make it up. These may be present in full or delta form.
Show 12 quoted lines
> Mercurial, or CVS). It is snapshot based. So if you want to download > "skip", you need only for the local part of doenloader to make appropriate > grafts, like below > > > *--*--*--*--*--*--*--*--*--*--*--HEAD (server) > > *--*--*...........*--*--*--*--*--HEAD (shallow/sparse clone) > > But the part you were talking about is _easy_ part; the hard part is > merges including merging branch which was split off the trunk before > cutoff-point, history rewriting (c.f. 'pu' branch, and rebases), etc.
Does an average user do these things? The shallow clone is there to address the casual user who gags at a five hour download to get an initial check out Mozilla when they want to make a five line change or just browse the source for a few minutes.
I would expect advanced users to have a full tree present.
I was going to have the dangling references from the shallow clone point to 'not-present' objects. When you try to do any of the more complex operations you would hit these objects and fault down more of the tree.
There would also be a command to bring down all of the objects to fully populate a sparse tree. You could do the shallow clone to begin with and then do the full tree populate overnight or in the background.
Maybe the answer is to build a shallow clone tool for casual use, and then if you try to run anything too complex on it git just tells you that you have to download the entire tree.
-- Jon Smirl jonsmirl@gmail.com