300
300
Choosing compression/delta support
301
301
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
303
Sketched notes on packs
304
~~~~~~~~~~~~~~~~~~~~~~~
307
- query and pull revs
308
- query and pull references
309
- query and pull further references
312
- query and pull revs and sigs
313
- query and pull inventory with cache on
314
- query and pull all of texts
317
- two modes - complete and incremental
319
- grab all revisions, regenerate deltas, etc.
320
- may want data grouping by recreation not by
321
origin. i.e. 'tip' pack has everything to construct
322
revision -1, older packs have data that is not needed
323
for current revisions.
326
- leave most data untouched most of the time
327
- therefore can't really promote old data to be current.
329
upper number of packs = sum of digits in the commit count
330
so we need to combine packs whenever a commit rolls over a power
331
of 10 - at most once every 10 commit, possibly much less.
332
exponential backoff of commits per pack file. So the number of
333
revisions per pack is log10(revisions in repository).
334
up to 10 commits - 1 revision per pack
335
up to 100 commits - 2 revisions per pack
336
10 commits - 1 packs, 100 commits - 2 packs
338
- count number of 1-revision packs, if 10 group them
339
into one larger pack.
340
- count number of 10-unit packs. if 10, group those
341
into one larger pack.
343
this approach reads 10 entire packs every 10 commits,
344
100 every 100, 1000 every 1000
346
303
Caching and writeing of data
347
304
============================