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