On 9/7/06, Jakub Narebski <jnareb@xxxxxxxxx> 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.
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@xxxxxxxxx - 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