annotate tests/test-merge1 @ 1803:06e7447c7302

speed up hg log --patch Changing dodiff to read the manifest/changelog for node1 before calling repo.update allows us to take advantage of the revlog revision cache. Before this patch and my previous "speed up hg log --debug" patch, when using hg log -p to display three revisions (A, B and C), dodiff and repo.changes would end up reading the manifests in this order: B A B A C B C B With both patches, this order becomes: A A B B B B C C (This considers only dodiff and repo.changes. I'm not sure how other parts of hg log enter the picture.) The speed up will depend on the revisions being displayed. (All "before" times already have my previous "speed up hg log --debug" patch applied.) hg repo (tip = 414e81ae971f). hg log -p before after real 0m50.981s 0m45.279s user 0m47.930s 0m42.560s sys 0m2.526s 0m2.523s output size: 6917897 bytes kernel repo (tip = 9d4e135960ed). hg log -p -l64 before after real 2m14.995s 1m45.025s user 2m9.509s 1m33.900s sys 0m3.663s 0m2.942s output size: 31497621 bytes same kernel repo. hg log -p -l64 -r c84c2069592f:0 before after real 1m48.045s 1m0.076s user 1m44.094s 0m58.492s sys 0m2.603s 0m1.103s output size: 197983 bytes c84c2069592f was the tip of a 10 day old kernel repo that I had lying around and was where I first tested this patch. For some weird coincidence it's also a place where the patch makes a huge difference.
author Alexis S. L. Carvalho <alexis@cecm.usp.br>
date Sun, 26 Feb 2006 02:26:17 +0100
parents db10b7114de0
children 7544700fd931
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
800
ec85f9e6f3b1 Don't use 'set -x', fix exports, sed and hexdump usage for Solaris.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 749
diff changeset
1 #!/bin/sh
407
0e0d0670b2bc [PATCH] Merging identical changes from another branch
mpm@selenic.com
parents:
diff changeset
2
0e0d0670b2bc [PATCH] Merging identical changes from another branch
mpm@selenic.com
parents:
diff changeset
3 cat <<'EOF' > merge
0e0d0670b2bc [PATCH] Merging identical changes from another branch
mpm@selenic.com
parents:
diff changeset
4 #!/bin/sh
0e0d0670b2bc [PATCH] Merging identical changes from another branch
mpm@selenic.com
parents:
diff changeset
5 echo merging for `basename $1`
0e0d0670b2bc [PATCH] Merging identical changes from another branch
mpm@selenic.com
parents:
diff changeset
6 EOF
0e0d0670b2bc [PATCH] Merging identical changes from another branch
mpm@selenic.com
parents:
diff changeset
7 chmod +x merge
0e0d0670b2bc [PATCH] Merging identical changes from another branch
mpm@selenic.com
parents:
diff changeset
8
0e0d0670b2bc [PATCH] Merging identical changes from another branch
mpm@selenic.com
parents:
diff changeset
9 mkdir t
0e0d0670b2bc [PATCH] Merging identical changes from another branch
mpm@selenic.com
parents:
diff changeset
10 cd t
0e0d0670b2bc [PATCH] Merging identical changes from another branch
mpm@selenic.com
parents:
diff changeset
11 hg init
0e0d0670b2bc [PATCH] Merging identical changes from another branch
mpm@selenic.com
parents:
diff changeset
12 echo This is file a1 > a
0e0d0670b2bc [PATCH] Merging identical changes from another branch
mpm@selenic.com
parents:
diff changeset
13 hg add a
749
7e4843b7efd2 Update tests to use commit -m and default -u
mpm@selenic.com
parents: 430
diff changeset
14 hg commit -m "commit #0" -d "0 0"
407
0e0d0670b2bc [PATCH] Merging identical changes from another branch
mpm@selenic.com
parents:
diff changeset
15 echo This is file b1 > b
0e0d0670b2bc [PATCH] Merging identical changes from another branch
mpm@selenic.com
parents:
diff changeset
16 hg add b
749
7e4843b7efd2 Update tests to use commit -m and default -u
mpm@selenic.com
parents: 430
diff changeset
17 hg commit -m "commit #1" -d "0 0"
407
0e0d0670b2bc [PATCH] Merging identical changes from another branch
mpm@selenic.com
parents:
diff changeset
18
0e0d0670b2bc [PATCH] Merging identical changes from another branch
mpm@selenic.com
parents:
diff changeset
19 hg update 0
0e0d0670b2bc [PATCH] Merging identical changes from another branch
mpm@selenic.com
parents:
diff changeset
20 echo This is file c1 > c
0e0d0670b2bc [PATCH] Merging identical changes from another branch
mpm@selenic.com
parents:
diff changeset
21 hg add c
749
7e4843b7efd2 Update tests to use commit -m and default -u
mpm@selenic.com
parents: 430
diff changeset
22 hg commit -m "commit #2" -d "0 0"
407
0e0d0670b2bc [PATCH] Merging identical changes from another branch
mpm@selenic.com
parents:
diff changeset
23 echo This is file b1 > b
1236
67a28636ea64 Fix bug with co -C across branches, update tests
mpm@selenic.com
parents: 814
diff changeset
24 echo %% no merges expected
407
0e0d0670b2bc [PATCH] Merging identical changes from another branch
mpm@selenic.com
parents:
diff changeset
25 env HGMERGE=../merge hg update -m 1
0e0d0670b2bc [PATCH] Merging identical changes from another branch
mpm@selenic.com
parents:
diff changeset
26 cd ..; /bin/rm -rf t
0e0d0670b2bc [PATCH] Merging identical changes from another branch
mpm@selenic.com
parents:
diff changeset
27
0e0d0670b2bc [PATCH] Merging identical changes from another branch
mpm@selenic.com
parents:
diff changeset
28 mkdir t
0e0d0670b2bc [PATCH] Merging identical changes from another branch
mpm@selenic.com
parents:
diff changeset
29 cd t
0e0d0670b2bc [PATCH] Merging identical changes from another branch
mpm@selenic.com
parents:
diff changeset
30 hg init
0e0d0670b2bc [PATCH] Merging identical changes from another branch
mpm@selenic.com
parents:
diff changeset
31 echo This is file a1 > a
0e0d0670b2bc [PATCH] Merging identical changes from another branch
mpm@selenic.com
parents:
diff changeset
32 hg add a
749
7e4843b7efd2 Update tests to use commit -m and default -u
mpm@selenic.com
parents: 430
diff changeset
33 hg commit -m "commit #0" -d "0 0"
407
0e0d0670b2bc [PATCH] Merging identical changes from another branch
mpm@selenic.com
parents:
diff changeset
34 echo This is file b1 > b
0e0d0670b2bc [PATCH] Merging identical changes from another branch
mpm@selenic.com
parents:
diff changeset
35 hg add b
749
7e4843b7efd2 Update tests to use commit -m and default -u
mpm@selenic.com
parents: 430
diff changeset
36 hg commit -m "commit #1" -d "0 0"
407
0e0d0670b2bc [PATCH] Merging identical changes from another branch
mpm@selenic.com
parents:
diff changeset
37
0e0d0670b2bc [PATCH] Merging identical changes from another branch
mpm@selenic.com
parents:
diff changeset
38 hg update 0
0e0d0670b2bc [PATCH] Merging identical changes from another branch
mpm@selenic.com
parents:
diff changeset
39 echo This is file c1 > c
0e0d0670b2bc [PATCH] Merging identical changes from another branch
mpm@selenic.com
parents:
diff changeset
40 hg add c
749
7e4843b7efd2 Update tests to use commit -m and default -u
mpm@selenic.com
parents: 430
diff changeset
41 hg commit -m "commit #2" -d "0 0"
407
0e0d0670b2bc [PATCH] Merging identical changes from another branch
mpm@selenic.com
parents:
diff changeset
42 echo This is file b2 > b
1581
db10b7114de0 abort when merging two heads and repository has local changes
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1236
diff changeset
43 echo %% merge should fail
db10b7114de0 abort when merging two heads and repository has local changes
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1236
diff changeset
44 env HGMERGE=../merge hg update -m 1
1236
67a28636ea64 Fix bug with co -C across branches, update tests
mpm@selenic.com
parents: 814
diff changeset
45 echo %% merge of b expected
1581
db10b7114de0 abort when merging two heads and repository has local changes
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1236
diff changeset
46 env HGMERGE=../merge hg update -f -m 1
407
0e0d0670b2bc [PATCH] Merging identical changes from another branch
mpm@selenic.com
parents:
diff changeset
47 cd ..; /bin/rm -rf t
1236
67a28636ea64 Fix bug with co -C across branches, update tests
mpm@selenic.com
parents: 814
diff changeset
48 echo %%
407
0e0d0670b2bc [PATCH] Merging identical changes from another branch
mpm@selenic.com
parents:
diff changeset
49
0e0d0670b2bc [PATCH] Merging identical changes from another branch
mpm@selenic.com
parents:
diff changeset
50 mkdir t
0e0d0670b2bc [PATCH] Merging identical changes from another branch
mpm@selenic.com
parents:
diff changeset
51 cd t
0e0d0670b2bc [PATCH] Merging identical changes from another branch
mpm@selenic.com
parents:
diff changeset
52 hg init
0e0d0670b2bc [PATCH] Merging identical changes from another branch
mpm@selenic.com
parents:
diff changeset
53 echo This is file a1 > a
0e0d0670b2bc [PATCH] Merging identical changes from another branch
mpm@selenic.com
parents:
diff changeset
54 hg add a
749
7e4843b7efd2 Update tests to use commit -m and default -u
mpm@selenic.com
parents: 430
diff changeset
55 hg commit -m "commit #0" -d "0 0"
407
0e0d0670b2bc [PATCH] Merging identical changes from another branch
mpm@selenic.com
parents:
diff changeset
56 echo This is file b1 > b
0e0d0670b2bc [PATCH] Merging identical changes from another branch
mpm@selenic.com
parents:
diff changeset
57 hg add b
749
7e4843b7efd2 Update tests to use commit -m and default -u
mpm@selenic.com
parents: 430
diff changeset
58 hg commit -m "commit #1" -d "0 0"
407
0e0d0670b2bc [PATCH] Merging identical changes from another branch
mpm@selenic.com
parents:
diff changeset
59 echo This is file b22 > b
749
7e4843b7efd2 Update tests to use commit -m and default -u
mpm@selenic.com
parents: 430
diff changeset
60 hg commit -m "commit #2" -d "0 0"
407
0e0d0670b2bc [PATCH] Merging identical changes from another branch
mpm@selenic.com
parents:
diff changeset
61 hg update 1
0e0d0670b2bc [PATCH] Merging identical changes from another branch
mpm@selenic.com
parents:
diff changeset
62 echo This is file c1 > c
0e0d0670b2bc [PATCH] Merging identical changes from another branch
mpm@selenic.com
parents:
diff changeset
63 hg add c
749
7e4843b7efd2 Update tests to use commit -m and default -u
mpm@selenic.com
parents: 430
diff changeset
64 hg commit -m "commit #3" -d "0 0"
1236
67a28636ea64 Fix bug with co -C across branches, update tests
mpm@selenic.com
parents: 814
diff changeset
65
67a28636ea64 Fix bug with co -C across branches, update tests
mpm@selenic.com
parents: 814
diff changeset
66 echo 'Contents of b should be "this is file b1"'
430
5b22029b5aa2 Fix up test-merge1
mpm@selenic.com
parents: 407
diff changeset
67 cat b
1236
67a28636ea64 Fix bug with co -C across branches, update tests
mpm@selenic.com
parents: 814
diff changeset
68
407
0e0d0670b2bc [PATCH] Merging identical changes from another branch
mpm@selenic.com
parents:
diff changeset
69 echo This is file b22 > b
1581
db10b7114de0 abort when merging two heads and repository has local changes
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1236
diff changeset
70 echo %% merge fails
db10b7114de0 abort when merging two heads and repository has local changes
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1236
diff changeset
71 env HGMERGE=../merge hg update -m 2
1236
67a28636ea64 Fix bug with co -C across branches, update tests
mpm@selenic.com
parents: 814
diff changeset
72 echo %% merge expected!
1581
db10b7114de0 abort when merging two heads and repository has local changes
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1236
diff changeset
73 env HGMERGE=../merge hg update -f -m 2
407
0e0d0670b2bc [PATCH] Merging identical changes from another branch
mpm@selenic.com
parents:
diff changeset
74 cd ..; /bin/rm -rf t
0e0d0670b2bc [PATCH] Merging identical changes from another branch
mpm@selenic.com
parents:
diff changeset
75
0e0d0670b2bc [PATCH] Merging identical changes from another branch
mpm@selenic.com
parents:
diff changeset
76 mkdir t
0e0d0670b2bc [PATCH] Merging identical changes from another branch
mpm@selenic.com
parents:
diff changeset
77 cd t
0e0d0670b2bc [PATCH] Merging identical changes from another branch
mpm@selenic.com
parents:
diff changeset
78 hg init
0e0d0670b2bc [PATCH] Merging identical changes from another branch
mpm@selenic.com
parents:
diff changeset
79 echo This is file a1 > a
0e0d0670b2bc [PATCH] Merging identical changes from another branch
mpm@selenic.com
parents:
diff changeset
80 hg add a
749
7e4843b7efd2 Update tests to use commit -m and default -u
mpm@selenic.com
parents: 430
diff changeset
81 hg commit -m "commit #0" -d "0 0"
407
0e0d0670b2bc [PATCH] Merging identical changes from another branch
mpm@selenic.com
parents:
diff changeset
82 echo This is file b1 > b
0e0d0670b2bc [PATCH] Merging identical changes from another branch
mpm@selenic.com
parents:
diff changeset
83 hg add b
749
7e4843b7efd2 Update tests to use commit -m and default -u
mpm@selenic.com
parents: 430
diff changeset
84 hg commit -m "commit #1" -d "0 0"
407
0e0d0670b2bc [PATCH] Merging identical changes from another branch
mpm@selenic.com
parents:
diff changeset
85 echo This is file b22 > b
749
7e4843b7efd2 Update tests to use commit -m and default -u
mpm@selenic.com
parents: 430
diff changeset
86 hg commit -m "commit #2" -d "0 0"
407
0e0d0670b2bc [PATCH] Merging identical changes from another branch
mpm@selenic.com
parents:
diff changeset
87 hg update 1
0e0d0670b2bc [PATCH] Merging identical changes from another branch
mpm@selenic.com
parents:
diff changeset
88 echo This is file c1 > c
0e0d0670b2bc [PATCH] Merging identical changes from another branch
mpm@selenic.com
parents:
diff changeset
89 hg add c
749
7e4843b7efd2 Update tests to use commit -m and default -u
mpm@selenic.com
parents: 430
diff changeset
90 hg commit -m "commit #3" -d "0 0"
407
0e0d0670b2bc [PATCH] Merging identical changes from another branch
mpm@selenic.com
parents:
diff changeset
91 echo This is file b33 > b
1581
db10b7114de0 abort when merging two heads and repository has local changes
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1236
diff changeset
92 echo %% merge of b should fail
407
0e0d0670b2bc [PATCH] Merging identical changes from another branch
mpm@selenic.com
parents:
diff changeset
93 env HGMERGE=../merge hg update -m 2
1581
db10b7114de0 abort when merging two heads and repository has local changes
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1236
diff changeset
94 echo %% merge of b expected
db10b7114de0 abort when merging two heads and repository has local changes
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1236
diff changeset
95 env HGMERGE=../merge hg update -f -m 2
407
0e0d0670b2bc [PATCH] Merging identical changes from another branch
mpm@selenic.com
parents:
diff changeset
96 cd ..; /bin/rm -rf t