From: Morten Welinder Date: Sun, 29 Jan 2006 14:19:23 GMT Subject: Re: [Census] So who uses git? Message-ID: <118833cc0601290619k1e9c6bb8gc63937f1a2d2b31e@mail.gmail.com> In-Reply-To: <7v7j8jpu48.fsf@assigned-by-dhcp.cox.net> > I think that 40% sounds about right. My understanding of the > underlying format CVS uses, RCS, is that it stores an full copy > of the tip of trunk uncompressed, and other versions of the file > are represented as incremental delta from that. The packed git > format does not favor particular version based on the distance > from the tip, and stores either a compressed full copy, or a > delta from some other revision (which may not necessarily be > represented as a full copy). When we store something as a delta > from something else, we limit the length of the delta chain to a > full copy to 10 (by default), so that you can get to a specific > object with at most 10 applications of delta on top of a full > copy. If I understand this right, that means that for a log file (in this case a ChangeLog file) that is appended to linearly as a function of revision number, we have... cvs: O(n) archive size git: O(n*n) archive size At least that is what we get if revision N is always deltad over revision N-1. A good deal could be saved if instead of dumping a full copy every 10 revisions, that revision would instead be deltad off an earlier revision, but I think it'll still be O(n*n). (/me prepares for Linus chiming in and telling me I should not keep ChangeLog files, :-) M.