6
(a motivating example of ultimate performance)
7
Assume there is a file with exactly the right data in compressed form. This
8
may be a tarred branch, a bundle, or a blob format. Performance in this case
9
scales with the size of the file.
13
Assume current repo format. Attempt to achieve parity with ``cp -r``. Read
14
each file only 1 time.
16
- read knit graph for revisions
17
- write filtered copy of revision knit O(d+a)
18
- write filtered copy of knit index O(d)
19
- Open knit index for inventory
20
- Write a filtered copy of inventory knit and simultaneously not all referenced
22
- Write filtered copy of inventory knit index O(d)
23
- For each referenced file-id:
25
- Open knit index for each file knit O(e)
26
- If acceptable threshold of irrelevant data hard-link O(f)
27
- Otherwise write filtered copy of text knit and simultaneously write
28
the fulltext to tree transform O(h)
30
- Write format markers O(1)
32
:a: size of aggregate revision metadata
33
:b: size of inventory changes for all revisions
34
:c: size of text changes for all files and all revisions (e * g)
35
:d: number of relevant revisions
36
:e: number of relevant versioned files
37
:f: size of the particular versioned file knit index
38
:g: size of the filtered versioned file knit
39
:h: size of the versioned file fulltext
40
:i: size of the largest file fulltext
47
Push: ask if there is a repository, and if not, what formats are okay
52
Push: send initial push command, streaming data in acceptable format, following
54
Pull: receive initial pull command, specifying format
56
Pull client complexity: O(a), memory cost O(1)
57
Push client complexity: procesing and memory cost same as disk case
61
Pull: same as disk case, but request all file knit indices at once and request
62
al file knits at once.
63
Push: same as disk case, but write all files at once.
68
- Read multiple segments of multiple files on HTTP and SFTP
69
- Write multiple files over SFTP