/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to doc/developers/merge-scaling.txt

  • Committer: John Arbash Meinel
  • Date: 2009-06-18 18:18:36 UTC
  • mto: This revision was merged to the branch mainline in revision 4461.
  • Revision ID: john@arbash-meinel.com-20090618181836-biodfkat9a8eyzjz
The new add_inventory_by_delta is returning a CHKInventory when mapping from NULL
Which is completely valid, but 'broke' one of the tests.
So to fix it, changed the test to use CHKInventories on both sides, and add an __eq__
member. The nice thing is that CHKInventory.__eq__ is fairly cheap, since it only
has to check the root keys.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
Scaling analysys of Merge
 
2
=========================
 
3
 
 
4
1. Fetch revisions O(a)
 
5
2. Common Ancestor [O(b)] **O(h)**
 
6
3. Calculate tree merge O(c) [+ O(b) + O(d)] **+ O(i)**
 
7
 
 
8
 - text merge O(e * e * f) + O(b)
 
9
 
 
10
4. Find filesystem conflicts O(c)
 
11
5. Resolve filesystem conflicts O(g)
 
12
6. Apply changes O(c) + O(log(d))
 
13
7. Set pending merges O(1)
 
14
8. Print conflicts O(g)
 
15
9. Print changes O(c)
 
16
 
 
17
:a: revisions missing from repo:
 
18
:b: nodes in the revision graph:
 
19
:c: files that differ between base and other:
 
20
:d: number of files in the tree
 
21
:e: number of lines in the text
 
22
:f: number of files requiring text merge
 
23
:g: number of conflicts (g <= c)
 
24
:h: humber of uncommon ancestors
 
25
:i: number of revisions between base and other
 
26
 
 
27
Needs
 
28
-----
 
29
- Access to revision graph proportional to number of revisions read
 
30
- Access to changed file metadata proportional to number of changes and number of intervening revisions.
 
31
- O(1) access to fulltexts
 
32
 
 
33
Notes
 
34
-----
 
35
Multiparent deltas may offer some nice properties for performance of annotation based merging.