Mercurial > hg > mercurial-crew-with-dirclash
annotate tests/fish-merge @ 1534:80a3d6a0af71
Optimize manifest.add
Testing shows that manifest.add is spending a significant percentage of
its time running calcoffsets and doing text = "".join(addlist). This
patch removes the need for both of these by storying the manifest in a
character array, and using a modified bisect search to find lines without
the help of a separate index of line offsets.
manifest.add was also reworked to push delta construction/combination into the
main loop.
Time to apply 2751 patches (without psyco, ext3 noatime,data=writeback):
Stock hg: 4m45s real 3m32s user 55s sys
patched: 2m48s real 1m53s user 43s sys
quilt: 2m30s real 45s user 50s sys
(quilt does much more io...)
author | mason@suse.com |
---|---|
date | Fri, 11 Nov 2005 18:20:22 -0800 |
parents | 0902ffece4b4 |
children |
rev | line source |
---|---|
544
3d4d5f2aba9a
Remove bashisms and use /bin/sh instead of /bin/bash.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
28
diff
changeset
|
1 #!/bin/sh |
3d4d5f2aba9a
Remove bashisms and use /bin/sh instead of /bin/bash.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
28
diff
changeset
|
2 |
28 | 3 set -e |
4 set -x | |
5 | |
6 # skip commit logs | |
797
95c258ee5264
Remove "export FOO=bar" bashism.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
547
diff
changeset
|
7 HGMERGE=tkmerge; export HGMERGE |
95c258ee5264
Remove "export FOO=bar" bashism.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
547
diff
changeset
|
8 EDITOR=true; export EDITOR |
28 | 9 |
10 rm -rf m m1 m2 | |
11 mkdir m | |
12 cd m | |
13 | |
14 echo "m this that" | |
15 echo "this" > a | |
16 echo "that" > b | |
17 hg init | |
18 hg addremove | |
19 hg commit | |
20 echo "a:" `hg dump a` "b:" `hg dump b` | |
21 echo | |
22 | |
23 cd .. | |
24 echo "m2 this that " | |
25 mkdir m2 | |
26 cd m2 | |
27 hg branch ../m | |
28 hg checkout | |
29 echo "a:" `hg dump a` "b:" `hg dump b` | |
30 echo | |
31 | |
32 cd ../m | |
33 echo "m this1 that " | |
34 echo "this1" > a | |
35 hg commit | |
36 echo "a:" `hg dump a` "b:" `hg dump b` | |
37 echo | |
38 | |
39 cd .. | |
40 echo "m1 this1 that " | |
41 mkdir m1 | |
42 cd m1 | |
43 hg branch ../m | |
44 hg checkout | |
45 echo "a:" `hg dump a` "b:" `hg dump b` | |
46 echo | |
47 | |
48 cd ../m1 | |
49 echo "m1 this1 that1" | |
50 echo "that1" > b | |
51 hg commit | |
52 echo "a:" `hg dump a` "b:" `hg dump b` | |
53 echo | |
54 | |
55 cd ../m2 | |
56 echo "m2 this that2" | |
57 echo "that2" > b | |
58 hg commit | |
59 echo "a:" `hg dump a` "b:" `hg dump b` | |
60 echo | |
61 | |
62 cd ../m1 | |
63 echo "m1:m2 this1 that1 that2" | |
64 hg merge ../m2 # b should conflict, a should be fine | |
65 echo "a:" `hg dump a` "b:" `hg dump b` | |
66 echo | |
67 | |
68 cd ../m2 | |
69 echo "m2 this2 that2" | |
70 echo "this2" > a | |
71 hg commit | |
72 echo "a:" `hg dump a` "b:" `hg dump b` | |
73 echo | |
74 | |
75 cd ../m2 | |
76 echo "m2:m this12 that2" | |
77 hg merge ../m # a should conflict, b should be fine | |
78 echo "a:" `hg dump a` "b:" `hg dump b` | |
79 echo | |
80 | |
81 # now here's the interesting bit | |
82 # if we choose ancestor by file, no conflicts | |
83 # otherwise we've got two equally close ancestors, each with a conflict | |
84 # if we go back to the root, we'll have both conflicts again | |
85 echo "m2:m1 this12 that12" | |
86 hg merge ../m1 # should be clean | |
87 echo "a:" `hg dump a` "b:" `hg dump b` | |
88 echo |