Mercurial > hg
annotate tests/test-issue1175.t @ 27784:432242f41d9f
obsolete: make _computeobsoleteset much faster
This patch makes _computeobsoleteset much faster by looping
over the draft and secrets as opposed to looping over the
successors.
This works because "number of draft and secret" is typically
way smaller(<100) than the number of successor in the repo (~90k in
my checkout of core mercurial as of today). And also because
it is very fast to compute "not public()".
I timed the code with the following setup:
"""
from mercurial import hg, ui, obsolete
ui = ui.ui()
repo = hg.repository(ui, "~/hg")
l = repo.obsstore.successors # This caches the result
"""
With about 90k successors.
k=obsolete._computeobsoleteset(repo) before this patch:
10 loops, best of 3: 33.9 ms per loop
k=obsolete._computeobsoleteset(repo) after this patch:
10000 loops, best of 3: 83.3 µs per loop
author | Laurent Charignon <lc2817@columbia.edu> |
---|---|
date | Wed, 13 Jan 2016 21:52:26 -0800 |
parents | cdb9493a7e2f |
children | fc1d75e7a98d |
rev | line source |
---|---|
26420
2fc86d92c4a9
urls: bulk-change BTS urls to new location
Matt Mackall <mpm@selenic.com>
parents:
23929
diff
changeset
|
1 https://bz.mercurial-scm.org/1175 |
12195
ee41be2bbf5a
tests: unify test-issue*
Adrian Buehlmann <adrian@cadifra.com>
parents:
6875
diff
changeset
|
2 |
ee41be2bbf5a
tests: unify test-issue*
Adrian Buehlmann <adrian@cadifra.com>
parents:
6875
diff
changeset
|
3 $ hg init |
ee41be2bbf5a
tests: unify test-issue*
Adrian Buehlmann <adrian@cadifra.com>
parents:
6875
diff
changeset
|
4 $ touch a |
ee41be2bbf5a
tests: unify test-issue*
Adrian Buehlmann <adrian@cadifra.com>
parents:
6875
diff
changeset
|
5 $ hg ci -Am0 |
ee41be2bbf5a
tests: unify test-issue*
Adrian Buehlmann <adrian@cadifra.com>
parents:
6875
diff
changeset
|
6 adding a |
ee41be2bbf5a
tests: unify test-issue*
Adrian Buehlmann <adrian@cadifra.com>
parents:
6875
diff
changeset
|
7 |
ee41be2bbf5a
tests: unify test-issue*
Adrian Buehlmann <adrian@cadifra.com>
parents:
6875
diff
changeset
|
8 $ hg mv a a1 |
ee41be2bbf5a
tests: unify test-issue*
Adrian Buehlmann <adrian@cadifra.com>
parents:
6875
diff
changeset
|
9 $ hg ci -m1 |
ee41be2bbf5a
tests: unify test-issue*
Adrian Buehlmann <adrian@cadifra.com>
parents:
6875
diff
changeset
|
10 |
ee41be2bbf5a
tests: unify test-issue*
Adrian Buehlmann <adrian@cadifra.com>
parents:
6875
diff
changeset
|
11 $ hg co 0 |
ee41be2bbf5a
tests: unify test-issue*
Adrian Buehlmann <adrian@cadifra.com>
parents:
6875
diff
changeset
|
12 1 files updated, 0 files merged, 1 files removed, 0 files unresolved |
ee41be2bbf5a
tests: unify test-issue*
Adrian Buehlmann <adrian@cadifra.com>
parents:
6875
diff
changeset
|
13 |
ee41be2bbf5a
tests: unify test-issue*
Adrian Buehlmann <adrian@cadifra.com>
parents:
6875
diff
changeset
|
14 $ hg mv a a2 |
ee41be2bbf5a
tests: unify test-issue*
Adrian Buehlmann <adrian@cadifra.com>
parents:
6875
diff
changeset
|
15 $ hg up |
12757
62c8f7691bc3
merge: make 'diverging renames' diagnostic a more helpful note.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
12328
diff
changeset
|
16 note: possible conflict - a was renamed multiple times to: |
12195
ee41be2bbf5a
tests: unify test-issue*
Adrian Buehlmann <adrian@cadifra.com>
parents:
6875
diff
changeset
|
17 a2 |
ee41be2bbf5a
tests: unify test-issue*
Adrian Buehlmann <adrian@cadifra.com>
parents:
6875
diff
changeset
|
18 a1 |
ee41be2bbf5a
tests: unify test-issue*
Adrian Buehlmann <adrian@cadifra.com>
parents:
6875
diff
changeset
|
19 1 files updated, 0 files merged, 0 files removed, 0 files unresolved |
ee41be2bbf5a
tests: unify test-issue*
Adrian Buehlmann <adrian@cadifra.com>
parents:
6875
diff
changeset
|
20 |
ee41be2bbf5a
tests: unify test-issue*
Adrian Buehlmann <adrian@cadifra.com>
parents:
6875
diff
changeset
|
21 $ hg ci -m2 |
ee41be2bbf5a
tests: unify test-issue*
Adrian Buehlmann <adrian@cadifra.com>
parents:
6875
diff
changeset
|
22 |
ee41be2bbf5a
tests: unify test-issue*
Adrian Buehlmann <adrian@cadifra.com>
parents:
6875
diff
changeset
|
23 $ touch a |
ee41be2bbf5a
tests: unify test-issue*
Adrian Buehlmann <adrian@cadifra.com>
parents:
6875
diff
changeset
|
24 $ hg ci -Am3 |
ee41be2bbf5a
tests: unify test-issue*
Adrian Buehlmann <adrian@cadifra.com>
parents:
6875
diff
changeset
|
25 adding a |
6875 | 26 |
12195
ee41be2bbf5a
tests: unify test-issue*
Adrian Buehlmann <adrian@cadifra.com>
parents:
6875
diff
changeset
|
27 $ hg mv a b |
ee41be2bbf5a
tests: unify test-issue*
Adrian Buehlmann <adrian@cadifra.com>
parents:
6875
diff
changeset
|
28 $ hg ci -Am4 a |
ee41be2bbf5a
tests: unify test-issue*
Adrian Buehlmann <adrian@cadifra.com>
parents:
6875
diff
changeset
|
29 |
ee41be2bbf5a
tests: unify test-issue*
Adrian Buehlmann <adrian@cadifra.com>
parents:
6875
diff
changeset
|
30 $ hg ci --debug --traceback -Am5 b |
23749
a387b0390082
localrepo: show headline notes in commitctx before showing filenames
Mads Kiilerich <madski@unity3d.com>
parents:
18743
diff
changeset
|
31 committing files: |
12195
ee41be2bbf5a
tests: unify test-issue*
Adrian Buehlmann <adrian@cadifra.com>
parents:
6875
diff
changeset
|
32 b |
23929
a43fdf33a6be
commit: remove reverse search for copy source when not in parent (issue4476)
Ryan McElroy <rmcelroy@fb.com>
parents:
23749
diff
changeset
|
33 warning: can't find ancestor for 'b' copied from 'a'! |
23749
a387b0390082
localrepo: show headline notes in commitctx before showing filenames
Mads Kiilerich <madski@unity3d.com>
parents:
18743
diff
changeset
|
34 committing manifest |
a387b0390082
localrepo: show headline notes in commitctx before showing filenames
Mads Kiilerich <madski@unity3d.com>
parents:
18743
diff
changeset
|
35 committing changelog |
23929
a43fdf33a6be
commit: remove reverse search for copy source when not in parent (issue4476)
Ryan McElroy <rmcelroy@fb.com>
parents:
23749
diff
changeset
|
36 committed changeset 5:83a687e8a97c80992ba385bbfd766be181bfb1d1 |
12195
ee41be2bbf5a
tests: unify test-issue*
Adrian Buehlmann <adrian@cadifra.com>
parents:
6875
diff
changeset
|
37 |
ee41be2bbf5a
tests: unify test-issue*
Adrian Buehlmann <adrian@cadifra.com>
parents:
6875
diff
changeset
|
38 $ hg verify |
ee41be2bbf5a
tests: unify test-issue*
Adrian Buehlmann <adrian@cadifra.com>
parents:
6875
diff
changeset
|
39 checking changesets |
ee41be2bbf5a
tests: unify test-issue*
Adrian Buehlmann <adrian@cadifra.com>
parents:
6875
diff
changeset
|
40 checking manifests |
ee41be2bbf5a
tests: unify test-issue*
Adrian Buehlmann <adrian@cadifra.com>
parents:
6875
diff
changeset
|
41 crosschecking files in changesets and manifests |
ee41be2bbf5a
tests: unify test-issue*
Adrian Buehlmann <adrian@cadifra.com>
parents:
6875
diff
changeset
|
42 checking files |
ee41be2bbf5a
tests: unify test-issue*
Adrian Buehlmann <adrian@cadifra.com>
parents:
6875
diff
changeset
|
43 4 files, 6 changesets, 4 total revisions |
ee41be2bbf5a
tests: unify test-issue*
Adrian Buehlmann <adrian@cadifra.com>
parents:
6875
diff
changeset
|
44 |
ee41be2bbf5a
tests: unify test-issue*
Adrian Buehlmann <adrian@cadifra.com>
parents:
6875
diff
changeset
|
45 $ hg export --git tip |
ee41be2bbf5a
tests: unify test-issue*
Adrian Buehlmann <adrian@cadifra.com>
parents:
6875
diff
changeset
|
46 # HG changeset patch |
ee41be2bbf5a
tests: unify test-issue*
Adrian Buehlmann <adrian@cadifra.com>
parents:
6875
diff
changeset
|
47 # User test |
ee41be2bbf5a
tests: unify test-issue*
Adrian Buehlmann <adrian@cadifra.com>
parents:
6875
diff
changeset
|
48 # Date 0 0 |
18648
76b69cccb07a
export: show 'Date' header in a format that also is readable for humans
Mads Kiilerich <mads@kiilerich.com>
parents:
12757
diff
changeset
|
49 # Thu Jan 01 00:00:00 1970 +0000 |
23929
a43fdf33a6be
commit: remove reverse search for copy source when not in parent (issue4476)
Ryan McElroy <rmcelroy@fb.com>
parents:
23749
diff
changeset
|
50 # Node ID 83a687e8a97c80992ba385bbfd766be181bfb1d1 |
18739
5b7175377bab
setparents: drop copies from dropped p2 (issue3843)
Matt Mackall <mpm@selenic.com>
parents:
12757
diff
changeset
|
51 # Parent 1d1625283f71954f21d14c3d44d0ad3c019c597f |
12195
ee41be2bbf5a
tests: unify test-issue*
Adrian Buehlmann <adrian@cadifra.com>
parents:
6875
diff
changeset
|
52 5 |
ee41be2bbf5a
tests: unify test-issue*
Adrian Buehlmann <adrian@cadifra.com>
parents:
6875
diff
changeset
|
53 |
ee41be2bbf5a
tests: unify test-issue*
Adrian Buehlmann <adrian@cadifra.com>
parents:
6875
diff
changeset
|
54 diff --git a/b b/b |
ee41be2bbf5a
tests: unify test-issue*
Adrian Buehlmann <adrian@cadifra.com>
parents:
6875
diff
changeset
|
55 new file mode 100644 |
ee41be2bbf5a
tests: unify test-issue*
Adrian Buehlmann <adrian@cadifra.com>
parents:
6875
diff
changeset
|
56 |
23929
a43fdf33a6be
commit: remove reverse search for copy source when not in parent (issue4476)
Ryan McElroy <rmcelroy@fb.com>
parents:
23749
diff
changeset
|
57 http://bz.selenic.com/show_bug.cgi?id=4476 |
a43fdf33a6be
commit: remove reverse search for copy source when not in parent (issue4476)
Ryan McElroy <rmcelroy@fb.com>
parents:
23749
diff
changeset
|
58 |
a43fdf33a6be
commit: remove reverse search for copy source when not in parent (issue4476)
Ryan McElroy <rmcelroy@fb.com>
parents:
23749
diff
changeset
|
59 $ hg init foo |
a43fdf33a6be
commit: remove reverse search for copy source when not in parent (issue4476)
Ryan McElroy <rmcelroy@fb.com>
parents:
23749
diff
changeset
|
60 $ cd foo |
a43fdf33a6be
commit: remove reverse search for copy source when not in parent (issue4476)
Ryan McElroy <rmcelroy@fb.com>
parents:
23749
diff
changeset
|
61 $ touch a && hg ci -Aqm a |
a43fdf33a6be
commit: remove reverse search for copy source when not in parent (issue4476)
Ryan McElroy <rmcelroy@fb.com>
parents:
23749
diff
changeset
|
62 $ hg mv a b |
a43fdf33a6be
commit: remove reverse search for copy source when not in parent (issue4476)
Ryan McElroy <rmcelroy@fb.com>
parents:
23749
diff
changeset
|
63 $ echo b1 >> b |
a43fdf33a6be
commit: remove reverse search for copy source when not in parent (issue4476)
Ryan McElroy <rmcelroy@fb.com>
parents:
23749
diff
changeset
|
64 $ hg ci -Aqm b1 |
a43fdf33a6be
commit: remove reverse search for copy source when not in parent (issue4476)
Ryan McElroy <rmcelroy@fb.com>
parents:
23749
diff
changeset
|
65 $ hg up 0 |
a43fdf33a6be
commit: remove reverse search for copy source when not in parent (issue4476)
Ryan McElroy <rmcelroy@fb.com>
parents:
23749
diff
changeset
|
66 1 files updated, 0 files merged, 1 files removed, 0 files unresolved |
a43fdf33a6be
commit: remove reverse search for copy source when not in parent (issue4476)
Ryan McElroy <rmcelroy@fb.com>
parents:
23749
diff
changeset
|
67 $ hg mv a b |
a43fdf33a6be
commit: remove reverse search for copy source when not in parent (issue4476)
Ryan McElroy <rmcelroy@fb.com>
parents:
23749
diff
changeset
|
68 $ echo b2 >> b |
a43fdf33a6be
commit: remove reverse search for copy source when not in parent (issue4476)
Ryan McElroy <rmcelroy@fb.com>
parents:
23749
diff
changeset
|
69 $ hg ci -Aqm b2 |
a43fdf33a6be
commit: remove reverse search for copy source when not in parent (issue4476)
Ryan McElroy <rmcelroy@fb.com>
parents:
23749
diff
changeset
|
70 $ hg graft 1 |
a43fdf33a6be
commit: remove reverse search for copy source when not in parent (issue4476)
Ryan McElroy <rmcelroy@fb.com>
parents:
23749
diff
changeset
|
71 grafting 1:5974126fad84 "b1" |
a43fdf33a6be
commit: remove reverse search for copy source when not in parent (issue4476)
Ryan McElroy <rmcelroy@fb.com>
parents:
23749
diff
changeset
|
72 merging b |
26614
ef1eb6df7071
simplemerge: move conflict warning message to filemerge
Siddharth Agarwal <sid0@fb.com>
parents:
26420
diff
changeset
|
73 warning: conflicts while merging b! (edit, then use 'hg resolve --mark') |
23929
a43fdf33a6be
commit: remove reverse search for copy source when not in parent (issue4476)
Ryan McElroy <rmcelroy@fb.com>
parents:
23749
diff
changeset
|
74 abort: unresolved conflicts, can't continue |
a43fdf33a6be
commit: remove reverse search for copy source when not in parent (issue4476)
Ryan McElroy <rmcelroy@fb.com>
parents:
23749
diff
changeset
|
75 (use hg resolve and hg graft --continue) |
a43fdf33a6be
commit: remove reverse search for copy source when not in parent (issue4476)
Ryan McElroy <rmcelroy@fb.com>
parents:
23749
diff
changeset
|
76 [255] |
a43fdf33a6be
commit: remove reverse search for copy source when not in parent (issue4476)
Ryan McElroy <rmcelroy@fb.com>
parents:
23749
diff
changeset
|
77 $ echo a > b |
a43fdf33a6be
commit: remove reverse search for copy source when not in parent (issue4476)
Ryan McElroy <rmcelroy@fb.com>
parents:
23749
diff
changeset
|
78 $ echo b3 >> b |
a43fdf33a6be
commit: remove reverse search for copy source when not in parent (issue4476)
Ryan McElroy <rmcelroy@fb.com>
parents:
23749
diff
changeset
|
79 $ hg resolve --mark b |
a43fdf33a6be
commit: remove reverse search for copy source when not in parent (issue4476)
Ryan McElroy <rmcelroy@fb.com>
parents:
23749
diff
changeset
|
80 (no more unresolved files) |
27625
cdb9493a7e2f
graft: hook afterresolvedstates
timeless <timeless@mozdev.org>
parents:
26614
diff
changeset
|
81 continue: hg graft --continue |
23929
a43fdf33a6be
commit: remove reverse search for copy source when not in parent (issue4476)
Ryan McElroy <rmcelroy@fb.com>
parents:
23749
diff
changeset
|
82 $ hg graft --continue |
a43fdf33a6be
commit: remove reverse search for copy source when not in parent (issue4476)
Ryan McElroy <rmcelroy@fb.com>
parents:
23749
diff
changeset
|
83 grafting 1:5974126fad84 "b1" |
a43fdf33a6be
commit: remove reverse search for copy source when not in parent (issue4476)
Ryan McElroy <rmcelroy@fb.com>
parents:
23749
diff
changeset
|
84 warning: can't find ancestor for 'b' copied from 'a'! |
a43fdf33a6be
commit: remove reverse search for copy source when not in parent (issue4476)
Ryan McElroy <rmcelroy@fb.com>
parents:
23749
diff
changeset
|
85 $ hg log -f b -T 'changeset: {rev}:{node|short}\nsummary: {desc}\n\n' |
a43fdf33a6be
commit: remove reverse search for copy source when not in parent (issue4476)
Ryan McElroy <rmcelroy@fb.com>
parents:
23749
diff
changeset
|
86 changeset: 3:376d30ccffc0 |
a43fdf33a6be
commit: remove reverse search for copy source when not in parent (issue4476)
Ryan McElroy <rmcelroy@fb.com>
parents:
23749
diff
changeset
|
87 summary: b1 |
a43fdf33a6be
commit: remove reverse search for copy source when not in parent (issue4476)
Ryan McElroy <rmcelroy@fb.com>
parents:
23749
diff
changeset
|
88 |
a43fdf33a6be
commit: remove reverse search for copy source when not in parent (issue4476)
Ryan McElroy <rmcelroy@fb.com>
parents:
23749
diff
changeset
|
89 changeset: 2:416baaa2e5e4 |
a43fdf33a6be
commit: remove reverse search for copy source when not in parent (issue4476)
Ryan McElroy <rmcelroy@fb.com>
parents:
23749
diff
changeset
|
90 summary: b2 |
a43fdf33a6be
commit: remove reverse search for copy source when not in parent (issue4476)
Ryan McElroy <rmcelroy@fb.com>
parents:
23749
diff
changeset
|
91 |
a43fdf33a6be
commit: remove reverse search for copy source when not in parent (issue4476)
Ryan McElroy <rmcelroy@fb.com>
parents:
23749
diff
changeset
|
92 changeset: 0:3903775176ed |
a43fdf33a6be
commit: remove reverse search for copy source when not in parent (issue4476)
Ryan McElroy <rmcelroy@fb.com>
parents:
23749
diff
changeset
|
93 summary: a |
a43fdf33a6be
commit: remove reverse search for copy source when not in parent (issue4476)
Ryan McElroy <rmcelroy@fb.com>
parents:
23749
diff
changeset
|
94 |
a43fdf33a6be
commit: remove reverse search for copy source when not in parent (issue4476)
Ryan McElroy <rmcelroy@fb.com>
parents:
23749
diff
changeset
|
95 |
a43fdf33a6be
commit: remove reverse search for copy source when not in parent (issue4476)
Ryan McElroy <rmcelroy@fb.com>
parents:
23749
diff
changeset
|
96 |