Jon Smirl wrote: > Here is another way to look at the shallow clone problem. The only > public ids in a git tree are the head and tag pointers. Send these to > the client. Now let's modify the git tools to fault the full objects > in one by one from the server whenever a git operation needs the > object. Dangling references would point to 'not-present' objects. > > For a typical user using a model like this, how much of the Mozilla > repository would end up being faulted into their machine? Mozilla has > 2M objects and 250K commits in a 450MB pack. My estimate is that a > typical user is going to touch less than 200K of the objects and maybe > less than 100K. > > Of course always faulting in full objects is wasteful. A smart scheme > would be to try and anticipate with some read ahead and figure out > ways to send deltas. Tools like gitk would need to only touch the > objects needed to draw the screen and not run the full commit chain at > startup. Yes, that is also recurring _lazy_ clone idea (or remote alternatives[*1*] idea). With it's own set of difficulties, like cache management, readahead and such, and of course differentiating between not present, and present on the remote server. And what to do when network fails... wouldn't it be just easier to use networking system like Coda or InterMezzo? [*1*] From Documentation/repository-layout.txt or http://www.kernel.org/pub/software/scm/git/docs/repository-layout.html You can be using `objects/info/alternates` mechanism, or `$GIT_ALTERNATE_OBJECT_DIRECTORIES` mechanism to 'borrow' objects from other object stores. A repository with this kind of incomplete object store is not suitable to be published for use with dumb transports but otherwise is OK as long as `objects/info/alternates` points at the right object stores it borrows from. [...] objects/info/alternates:: This file records absolute filesystem paths of alternate object stores that this object store borrows objects from, one pathname per line. -- Jakub Narebski Warsaw, Poland ShadeHawk on #git - 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