{"thread":{"id":"3397","subject":"Delta-transfer using thin-pack","startedAt":"2006-02-19T23:27:49Z","lastAt":"2006-02-21T02:05:23Z","messageCount":2,"participants":["Junio C Hamano","Martin Langhoff"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"16429","messageId":"7voe13exoq.fsf@assigned-by-dhcp.cox.net","threadId":"3397","inReplyTo":null,"subject":"Delta-transfer using thin-pack","fromName":"Junio C Hamano","fromEmail":"junkio@cox.net","sentAt":"2006-02-19T23:27:49Z","receivedAt":"2006-02-19T23:27:49Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"I'll be sending out three experimental patches that would come\non top of \"next\".  With them, you should be able to:\n\n\t$ git send-pack --thin other/repo/sitory\n\nand it would send deltified representation based on things not\nin the transferred data.\n\nThis is somewhat experimental, although I tried it myself and it\nseems to work with my limited test.  Do not push into your\nproduction repository with it yet, but please do try it out.\n\nHow does it work?\n\n\"git send-pack\" works by:\n\n (1) negotiating with the other end to find out what common\n     commits our repository and the other one has;\n\n (2) computing the list of objects to send to the other end by\n     running\n\n     \"git-rev-list --objects $heads `git-rev-parse --not $commons`\"\n\n     ($heads are what we are going to send, $commons are what\n     they already have).\n\n (3) feeding (2) to git-pack-object --stdout, sending the result\n     to the other end.\n\n (4) invoke git-receive-pack on the other end and have it read\n     the output from (3), which will feed git-unpack-objects on\n     the other end.\n\nIn general, the packfile is designed to be \"self contained\".\nThis is necessary in case we need to deal with more than one\nhuge packfiles that we can mmap only one at a time -- we\nguarantee that the base object of a deltified object is found\nwhile unpacking that deltified object because the base object\ncan always be found in the same pack.\n\nHowever, during send-pack/receive-pack transfer, we will unpack\nthe resulting packfile on the other end into loose objects, so\nit is not strictly necessary to require self-containedness to\nthe packfile used for the transfer.\n"},{"id":"16488","messageId":"46a038f90602201805l481af8ddl5b2d30862f61e29@mail.gmail.com","threadId":"3397","inReplyTo":"7voe13exoq.fsf@assigned-by-dhcp.cox.net","subject":"Re: Delta-transfer using thin-pack","fromName":"Martin Langhoff","fromEmail":"martin.langhoff@gmail.com","sentAt":"2006-02-21T02:05:23Z","receivedAt":"2006-02-21T02:05:23Z","isPatch":false,"sender":{"key":"martin.langhoff@gmail.com","avatar":"https://gravatar.com/avatar/1e3f311b6c4c15836501901ca58f8c0b0667246488084ba524d8bc9867e22fd9?d=mp&s=160"},"body":"On 2/20/06, Junio C Hamano <junkio@cox.net> wrote:\n> I'll be sending out three experimental patches that would come\n> on top of \"next\".  With them, you should be able to:\n\nI see that an updated version of this has made it to next & pu.\nCool stuff -- fetched, made, and playing w it ;-)\n\n\nm\n"}]}