On Fri, Sep 3, 2010 at 8:41 PM, Nicolas Pitre <nico@xxxxxxxxxxx> wrote: > I still think that if someone really want to apply the P2P principle à > la BitTorrent to Git, then it should be based on the distributed > exchange of _objects_ as I outlined in a previous email, and not file > chunks like BitTorrent does. The canonical Git _objects_ are fully > defined, while their actual encoding may change. ok - missed it. let's go back... ah _ha_ - with this: "Yep. Instead of transferring packs, a BitTorrent-alike transfer should be based on the transfer of _objects_. Therefore you can make the correspondance between file chunks in BitTorrent with objects in a Git aware system. So, when contacting a peer, you could negociate what is the set of objects that the peer has that you don't, and vice versa. Objects in Git are stable and immutable, and they all have a unique SHA1 signature. And to optimize the negociation, the pack index content can be used, first by exchanging the content of the first level fan-out table and ignoring those entries that are equal. This for each peer." ok, so, great! it does actually seem that, despite us using different terminologies, we're thinking along the same sort of lines. i'm marginally hampered by being unfamiliar with git, for which i apologise. so, when i mentioned extracting the objects from the index file of "git pack-object", i was debating whether to then use that to re-create the pack object (in some nebulous way) - that's sort-of the same thing. i was also debating whether to mention the idea of using git pack-object to extract one and only one object ( there is likely a more efficient way of doing that ). but, yes: i was thinking of making the vfs-layer expose individual objects, i just hadn't mentioned it yet (and missed your earlier reply, nicolas, for which i apologise). btw the idea of parsing the fan-out table would not have occurred to me in a miiiilllion years :) i'll take a look at that. but whilst i'm doing that, the main question i really need to know is: how do you get one single explicit object out of git? tia, l. -- 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