{"thread":{"id":"2491","subject":"Re: Balanced packing strategy","startedAt":"2005-11-14T05:03:06Z","lastAt":"2005-11-14T10:24:35Z","messageCount":2,"participants":["Craig Schlenter","Josef Weidendorfer"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"11758","messageId":"W4340426396265721131944586@webmail12","threadId":"2491","inReplyTo":null,"subject":"Re: Balanced packing strategy","fromName":"Craig Schlenter","fromEmail":"craig@codefountain.com","sentAt":"2005-11-14T05:03:06Z","receivedAt":"2005-11-14T05:03:06Z","isPatch":false,"sender":{"key":"craig@codefountain.com","avatar":null},"body":"Hi\n\n> From: Josef Weidendorfer [mailto:Josef.Weidendorfer@gmx.de]\n> [snip]\n> AFAICS, the git native protocol (which is nothing more than a pack itself\n> for each transfer) even has this problem, too: If you are updating every\n> day via git native, the sum of transfered bytes in a month will be a\n> multiple of one git transfer for all the month's changes.\n\nInteresting ... is this because in a bigger pack the compression will\nbe better as there is probably more stuff to \"delta\" against?\n\n--Craig\n"},{"id":"11775","messageId":"200511141124.35429.Josef.Weidendorfer@gmx.de","threadId":"2491","inReplyTo":"W4340426396265721131944586@webmail12","subject":"Re: Balanced packing strategy","fromName":"Josef Weidendorfer","fromEmail":"josef.weidendorfer@gmx.de","sentAt":"2005-11-14T10:24:35Z","receivedAt":"2005-11-14T10:24:35Z","isPatch":false,"sender":{"key":"josef.weidendorfer@gmx.de","avatar":null},"body":"On Monday 14 November 2005 06:03, Craig Schlenter wrote:\n> Hi\n> \n> > From: Josef Weidendorfer [mailto:Josef.Weidendorfer@gmx.de]\n> > [snip]\n> > AFAICS, the git native protocol (which is nothing more than a pack itself\n> > for each transfer) even has this problem, too: If you are updating every\n> > day via git native, the sum of transfered bytes in a month will be a\n> > multiple of one git transfer for all the month's changes.\n> \n> Interesting ... is this because in a bigger pack the compression will\n> be better as there is probably more stuff to \"delta\" against?\n\nNo, it is because of the self-containment of git packs: Deltas (storing\ndifferences instead of full file content) are only allowed to other\nobjects in the same pack. The self-containment is a safety measure: you\ndo not want to have dependencies to the outside, because this would\ndestroy the contents of a pack by changing/removing another file.\n\nSo if the changes of a day are 100 oneliners to different files, the pack\nhas to contain the full content of the 100 files. With incremental\npacking, you would probably add only the 100 oneliners (ie. deltas) at end\nof the pack, because the full file contents have to be in the pack if there\nwas a change to them recorded in the pack previously. And this probability\nis higher if the pack contains a larger history of the project.\n\nBack to the example: By doing a git transfer every day, you always will\ntransfer the full contents of files which where changed on this day, because\ngit protocol transfers self-contained packs.\n\nJosef\n"}]}