On Feb 15, 2018, at 10:17 PM, Daniel Shahaf <d.s_at_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.s_at_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.
Received on 2018-02-16 14:08:22 CET