On Feb 15, 2018, at 10:17 PM, Daniel Shahaf <d...@daniel.shahaf.name> wrote: > > Nathan Hartman wrote on Thu, 15 Feb 2018 22:01 -0500: >>> On Feb 15, 2018, at 4:11 PM, Daniel Shahaf <d...@daniel.shahaf.name> wrote: >>> >>> Péter wrote on Thu, 15 Feb 2018 19:47 +0100: >>> I'm not sure why you say "at least" 17 deltas. The default value of >>> max-linear-deltification (see fsfs.conf) is 16, meaning that no fulltext >>> will require 17 delta applications to produce. >>> >> >> Does this mean that when checking out HEAD from a repository with a >> large number of commits, the oldest revision it must access is HEAD - >> 16? > > No. > > Besides, if that were the case, then any commit to the ASF repository, which > has over 200 projects, would have had to replicate the contents of 184 > projects > in full (including all tags and branches). That would be impractical and > inefficient. > >> In other words, is a compressed full text stored every 16 revisions? > > No, for two reasons. > > First, we're talking about revisions of a particular file here: not 'svn log > -q ^/' > but 'svn log -q file.c'. > > Second, Subversion uses skip-deltas, so a fulltext would be stored only > every O(2**16) ≈ O(65k) revisions (of a particular file): > > https://svn.apache.org/repos/asf/subversion/trunk/notes/skip-deltas > > Cheers, > > Daniel
Thanks. That's a very good explanation, and a very elegant solution. I especially like that past revisions are not rewritten to avoid introducing errors.