{"thread":{"id":"4454","subject":"Lazy clone ideas","startedAt":"2006-06-10T08:58:41Z","lastAt":"2006-06-16T22:59:25Z","messageCount":2,"participants":["Jakub Narebski","Elrond"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"21543","messageId":"e6e1jm$tes$1@sea.gmane.org","threadId":"4454","inReplyTo":null,"subject":"Lazy clone ideas","fromName":"Jakub Narebski","fromEmail":"jnareb@gmail.com","sentAt":"2006-06-10T08:58:41Z","receivedAt":"2006-06-10T08:58:41Z","isPatch":false,"sender":{"key":"jnareb@gmail.com","avatar":"https://avatars.githubusercontent.com/u/2706?v=4"},"body":"I've started new thread for lazy clone ideas,\nsplitting from \"Figured out how to get Mozilla into git\"\n\nRogan Dawes wrote:\n> Here's an idea. How about separating trees and commits from the actual \n> blobs (e.g. in separate packs)? My reasoning is that the commits and \n> trees should only be a small portion of the overall repository size, and \n> should not be that expensive to transfer. (Of course, this is only a \n> guess, and needs some numbers to back it up.)\n> \n> So, a shallow clone would receive all of the tree objects, and all of \n> the commit objects, and could then request a pack containing the blobs \n> represented by the current HEAD.\n\nThat would be _lazy_ clone (with on-demand pack downloading from \"master\"\nfull history repository), rather than shallow clone.\n\nI had an idea for having all the commit objects (without all the tree\nobjects) below the soft-grafts line (beyond the line we cut-off full\nhistory and start being lazy).\n \n> In this way, the user has a history that will show all of the commit \n> messages, and would be able to see _which_ files have changed over time \n> e.g. gitk would still work - except for the actual file level diff, \"git \n> log\" should also still work, etc\n> \n> This would also enable other optimisations.\n> \n> For example, documentation people would only need to get the objects \n> under the doc/ tree, and would not need to actually check out the \n> source. Git could detect any actual changes by checking whether it has \n> the previous blob in its local repository, and whether the file exists \n> locally. Creating a patch would obviously require that the person checks \n> out the previous version, but one could theoretically commit a new blob \n> to a repo without having the previous one (not saying that this would be \n> a good idea, of course)\n\nSomething akin to CVS's modules, or rather to how CVS modules can be abused?\nSomething called, I think, partial checkout?\n\nThis is a separate idea and I think worth implementing even for full\nrepository.\n\n> This would probably require Eric Biederman's \"direct access to blob\" \n> patches, I guess, in order to be feasible.\n\nAnd it would need place to store URI from where to doenload objects\non-demand: perhaps 'remote alternatives'?\n\n-- \nJakub Narebski\nWarsaw, Poland\nShadeHawk on #git\n"},{"id":"21925","messageId":"loom.20060617T005427-633@post.gmane.org","threadId":"4454","inReplyTo":"e6e1jm$tes$1@sea.gmane.org","subject":"Re: Lazy clone ideas","fromName":"Elrond","fromEmail":"elrond+kernel.org@samba-tng.org","sentAt":"2006-06-16T22:59:25Z","receivedAt":"2006-06-16T22:59:25Z","isPatch":false,"sender":{"key":"elrond+kernel.org@samba-tng.org","avatar":null},"body":"Jakub Narebski <jnareb <at> gmail.com> writes:\n> \n> I've started new thread for lazy clone ideas,\n> splitting from \"Figured out how to get Mozilla into git\"\n[...]\n\nI like the lazy clone idea, I think, I said that earlier.\n\n\n> > This would probably require Eric Biederman's \"direct access to blob\" \n> > patches, I guess, in order to be feasible.\n\nAre those patches allowing the git: protocol to request a list of objects\ndirectly? (Like my \"remote git-cat-file\" request?)\n\nWhat's the status of the patch?\n\n\n> And it would need place to store URI from where to doenload objects\n> on-demand: perhaps 'remote alternatives'?\n\nYep, that would be the next step.\nHaving direct access to blobs would be needed first though.\n\n\n    Elrond\n"}]}