annotate tests/test-convert-cvs-detectmerge.t @ 44118:f81c17ec303c

hgdemandimport: apply lazy module loading to sys.meta_path finders Python's `sys.meta_path` finders are the primary objects whose job it is to find a module at import time. When `import` is called, Python iterates objects in this list and calls `o.find_spec(...)` to find a `ModuleSpec` (or None if the module couldn't be found by that finder). If no meta path finder can find a module, import fails. One of the default meta path finders is `PathFinder`. Its job is to import modules from the filesystem and is probably the most important importer. This finder looks at `sys.path` and `sys.path_hooks` to do its job. The `ModuleSpec` returned by `MetaPathImporter.find_spec()` has a `loader` attribute, which defines the concrete module loader to use. `sys.path_hooks` is a hook point for teaching `PathFinder` to instantiate custom loader types. Previously, we injected a custom `sys.path_hook` that told `PathFinder` to wrap the default loaders with a loader that creates a module object that is lazy. This approach worked. But its main limitation was that it only applied to the `PathFinder` meta path importer. There are other meta path importers that are registered. And in the case of PyOxidizer loading modules from memory, `PathFinder` doesn't come into play since PyOxidizer's own meta path importer was handling all imports. This commit changes our approach to lazy module loading by proxying all meta path importers. Specifically, we overload the `find_spec()` method to swap in a wrapped loader on the `ModuleSpec` before it is returned. The end result of this is all meta path importers should be lazy. As much as I would have loved to utilize .__class__ manipulation to achieve this, some meta path importers are implemented in C/Rust in such a way that they cannot be monkeypatched. This is why we use __getattribute__ to define a proxy. Also, this change could theoretically open us up to regressions in meta path importers whose loader is creating module objects which can't be monkeypatched. But I'm not aware of any of these in the wild. So I think we'll be safe. According to hyperfine, this change yields a decent startup time win of 5-6ms: ``` Benchmark #1: ~/.pyenv/versions/3.6.10/bin/python ./hg version Time (mean ± σ): 86.8 ms ± 0.5 ms [User: 78.0 ms, System: 8.7 ms] Range (min … max): 86.0 ms … 89.1 ms 50 runs Time (mean ± σ): 81.1 ms ± 2.7 ms [User: 74.5 ms, System: 6.5 ms] Range (min … max): 77.8 ms … 90.5 ms 50 runs Benchmark #2: ~/.pyenv/versions/3.7.6/bin/python ./hg version Time (mean ± σ): 78.9 ms ± 0.6 ms [User: 70.2 ms, System: 8.7 ms] Range (min … max): 78.1 ms … 81.2 ms 50 runs Time (mean ± σ): 73.4 ms ± 0.6 ms [User: 65.3 ms, System: 8.0 ms] Range (min … max): 72.4 ms … 75.7 ms 50 runs Benchmark #3: ~/.pyenv/versions/3.8.1/bin/python ./hg version Time (mean ± σ): 78.1 ms ± 0.6 ms [User: 70.2 ms, System: 7.9 ms] Range (min … max): 77.4 ms … 80.9 ms 50 runs Time (mean ± σ): 72.1 ms ± 0.4 ms [User: 64.4 ms, System: 7.6 ms] Range (min … max): 71.4 ms … 74.1 ms 50 runs ``` Differential Revision: https://phab.mercurial-scm.org/D7954
author Gregory Szorc <gregory.szorc@gmail.com>
date Mon, 20 Jan 2020 23:51:25 -0800
parents 96529f81e2e9
children e5e5ee2b60e4
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
22046
7a9cbb315d84 tests: replace exit 80 with #require
Matt Mackall <mpm@selenic.com>
parents: 20117
diff changeset
1 #require cvs
7a9cbb315d84 tests: replace exit 80 with #require
Matt Mackall <mpm@selenic.com>
parents: 20117
diff changeset
2
12521
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
3 Test config convert.cvsps.mergefrom config setting.
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
4 (Should test similar mergeto feature, but I don't understand it yet.)
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
5 Requires builtin cvsps.
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
6
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
7 $ CVSROOT=`pwd`/cvsrepo
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
8 $ export CVSROOT
8170
6c4fdde87f90 cvsps: add test for merge detection (issue1615).
Greg Ward <greg-hg@gerg.ca>
parents:
diff changeset
9
12521
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
10 $ cvscall()
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
11 > {
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
12 > cvs -f "$@"
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
13 > }
8170
6c4fdde87f90 cvsps: add test for merge detection (issue1615).
Greg Ward <greg-hg@gerg.ca>
parents:
diff changeset
14
12521
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
15 output of 'cvs ci' varies unpredictably, so just discard it
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
16 XXX copied from test-convert-cvs-synthetic
8170
6c4fdde87f90 cvsps: add test for merge detection (issue1615).
Greg Ward <greg-hg@gerg.ca>
parents:
diff changeset
17
12521
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
18 $ cvsci()
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
19 > {
14569
017ab404e588 tests: fix up date ambiguity in cvs test
Matt Mackall <mpm@selenic.com>
parents: 12640
diff changeset
20 > sleep 1
12521
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
21 > cvs -f ci "$@" > /dev/null
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
22 > }
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
23
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
24 XXX copied from test-convert-cvs-synthetic
8170
6c4fdde87f90 cvsps: add test for merge detection (issue1615).
Greg Ward <greg-hg@gerg.ca>
parents:
diff changeset
25
23172
e955549cd045 tests: write hgrc of more than two lines by using shell heredoc
Yuya Nishihara <yuya@tcha.org>
parents: 22046
diff changeset
26 $ cat <<EOF >> $HGRCPATH
e955549cd045 tests: write hgrc of more than two lines by using shell heredoc
Yuya Nishihara <yuya@tcha.org>
parents: 22046
diff changeset
27 > [extensions]
e955549cd045 tests: write hgrc of more than two lines by using shell heredoc
Yuya Nishihara <yuya@tcha.org>
parents: 22046
diff changeset
28 > convert =
e955549cd045 tests: write hgrc of more than two lines by using shell heredoc
Yuya Nishihara <yuya@tcha.org>
parents: 22046
diff changeset
29 > [convert]
e955549cd045 tests: write hgrc of more than two lines by using shell heredoc
Yuya Nishihara <yuya@tcha.org>
parents: 22046
diff changeset
30 > cvsps.cache = 0
e955549cd045 tests: write hgrc of more than two lines by using shell heredoc
Yuya Nishihara <yuya@tcha.org>
parents: 22046
diff changeset
31 > cvsps.mergefrom = \[MERGE from (\S+)\]
e955549cd045 tests: write hgrc of more than two lines by using shell heredoc
Yuya Nishihara <yuya@tcha.org>
parents: 22046
diff changeset
32 > EOF
12521
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
33
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
34 create cvs repository with one project
8170
6c4fdde87f90 cvsps: add test for merge detection (issue1615).
Greg Ward <greg-hg@gerg.ca>
parents:
diff changeset
35
12521
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
36 $ cvscall -q -d "$CVSROOT" init
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
37 $ mkdir cvsrepo/proj
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
38
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
39 populate cvs repository
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
40
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
41 $ cvscall -Q co proj
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
42 $ cd proj
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
43 $ touch file1
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
44 $ cvscall -Q add file1
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
45 $ cvsci -m"add file1 on trunk"
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
46 cvs commit: Examining .
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
47
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
48 create two release branches
8170
6c4fdde87f90 cvsps: add test for merge detection (issue1615).
Greg Ward <greg-hg@gerg.ca>
parents:
diff changeset
49
12521
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
50 $ cvscall -q tag -b v1_0
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
51 T file1
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
52 $ cvscall -q tag -b v1_1
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
53 T file1
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
54
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
55 modify file1 on branch v1_0
8170
6c4fdde87f90 cvsps: add test for merge detection (issue1615).
Greg Ward <greg-hg@gerg.ca>
parents:
diff changeset
56
12521
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
57 $ cvscall -Q update -rv1_0
14824
7698c275aa56 tests: restore previous fix for date ambiguity in cvs test
Mads Kiilerich <mads@kiilerich.com>
parents: 14569
diff changeset
58 $ sleep 1
12521
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
59 $ echo "change" >> file1
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
60 $ cvsci -m"add text"
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
61 cvs commit: Examining .
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
62
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
63 make unrelated change on v1_1
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
64
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
65 $ cvscall -Q update -rv1_1
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
66 $ touch unrelated
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
67 $ cvscall -Q add unrelated
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
68 $ cvsci -m"unrelated change"
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
69 cvs commit: Examining .
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
70
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
71 merge file1 to v1_1
8170
6c4fdde87f90 cvsps: add test for merge detection (issue1615).
Greg Ward <greg-hg@gerg.ca>
parents:
diff changeset
72
12521
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
73 $ cvscall -Q update -jv1_0
12640
6cc4b14fb76b tests: remove redundant globs
Mads Kiilerich <mads@kiilerich.com>
parents: 12585
diff changeset
74 RCS file: $TESTTMP/cvsrepo/proj/file1,v
12521
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
75 retrieving revision 1.1
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
76 retrieving revision 1.1.2.1
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
77 Merging differences between 1.1 and 1.1.2.1 into file1
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
78 $ cvsci -m"add text [MERGE from v1_0]"
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
79 cvs commit: Examining .
8170
6c4fdde87f90 cvsps: add test for merge detection (issue1615).
Greg Ward <greg-hg@gerg.ca>
parents:
diff changeset
80
12521
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
81 merge change to trunk
8170
6c4fdde87f90 cvsps: add test for merge detection (issue1615).
Greg Ward <greg-hg@gerg.ca>
parents:
diff changeset
82
12521
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
83 $ cvscall -Q update -A
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
84 $ cvscall -Q update -jv1_1
12640
6cc4b14fb76b tests: remove redundant globs
Mads Kiilerich <mads@kiilerich.com>
parents: 12585
diff changeset
85 RCS file: $TESTTMP/cvsrepo/proj/file1,v
12521
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
86 retrieving revision 1.1
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
87 retrieving revision 1.1.4.1
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
88 Merging differences between 1.1 and 1.1.4.1 into file1
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
89 $ cvsci -m"add text [MERGE from v1_1]"
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
90 cvs commit: Examining .
8170
6c4fdde87f90 cvsps: add test for merge detection (issue1615).
Greg Ward <greg-hg@gerg.ca>
parents:
diff changeset
91
12521
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
92 non-merged change on trunk
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
93
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
94 $ echo "foo" > file2
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
95 $ cvscall -Q add file2
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
96 $ cvsci -m"add file2 on trunk" file2
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
97
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
98 this will create rev 1.3
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
99 change on trunk to backport
8170
6c4fdde87f90 cvsps: add test for merge detection (issue1615).
Greg Ward <greg-hg@gerg.ca>
parents:
diff changeset
100
12521
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
101 $ echo "backport me" >> file1
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
102 $ cvsci -m"add other text" file1
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
103 $ cvscall log file1
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
104
12640
6cc4b14fb76b tests: remove redundant globs
Mads Kiilerich <mads@kiilerich.com>
parents: 12585
diff changeset
105 RCS file: $TESTTMP/cvsrepo/proj/file1,v
12521
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
106 Working file: file1
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
107 head: 1.3
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
108 branch:
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
109 locks: strict
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
110 access list:
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
111 symbolic names:
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
112 v1_1: 1.1.0.4
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
113 v1_0: 1.1.0.2
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
114 keyword substitution: kv
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
115 total revisions: 5; selected revisions: 5
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
116 description:
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
117 ----------------------------
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
118 revision 1.3
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
119 date: * (glob)
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
120 add other text
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
121 ----------------------------
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
122 revision 1.2
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
123 date: * (glob)
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
124 add text [MERGE from v1_1]
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
125 ----------------------------
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
126 revision 1.1
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
127 date: * (glob)
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
128 branches: 1.1.2; 1.1.4;
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
129 add file1 on trunk
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
130 ----------------------------
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
131 revision 1.1.4.1
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
132 date: * (glob)
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
133 add text [MERGE from v1_0]
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
134 ----------------------------
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
135 revision 1.1.2.1
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
136 date: * (glob)
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
137 add text
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
138 =============================================================================
8170
6c4fdde87f90 cvsps: add test for merge detection (issue1615).
Greg Ward <greg-hg@gerg.ca>
parents:
diff changeset
139
12521
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
140 XXX how many ways are there to spell "trunk" with CVS?
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
141 backport trunk change to v1_1
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
142
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
143 $ cvscall -Q update -rv1_1
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
144 $ cvscall -Q update -j1.2 -j1.3 file1
12640
6cc4b14fb76b tests: remove redundant globs
Mads Kiilerich <mads@kiilerich.com>
parents: 12585
diff changeset
145 RCS file: $TESTTMP/cvsrepo/proj/file1,v
12521
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
146 retrieving revision 1.2
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
147 retrieving revision 1.3
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
148 Merging differences between 1.2 and 1.3 into file1
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
149 $ cvsci -m"add other text [MERGE from HEAD]" file1
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
150
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
151 fix bug on v1_1, merge to trunk with error
8170
6c4fdde87f90 cvsps: add test for merge detection (issue1615).
Greg Ward <greg-hg@gerg.ca>
parents:
diff changeset
152
12521
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
153 $ cvscall -Q update -rv1_1
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
154 $ echo "merge forward" >> file1
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
155 $ cvscall -Q tag unmerged
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
156 $ cvsci -m"fix file1"
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
157 cvs commit: Examining .
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
158 $ cvscall -Q update -A
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
159 $ cvscall -Q update -junmerged -jv1_1
12640
6cc4b14fb76b tests: remove redundant globs
Mads Kiilerich <mads@kiilerich.com>
parents: 12585
diff changeset
160 RCS file: $TESTTMP/cvsrepo/proj/file1,v
12521
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
161 retrieving revision 1.1.4.2
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
162 retrieving revision 1.1.4.3
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
163 Merging differences between 1.1.4.2 and 1.1.4.3 into file1
8170
6c4fdde87f90 cvsps: add test for merge detection (issue1615).
Greg Ward <greg-hg@gerg.ca>
parents:
diff changeset
164
12521
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
165 note the typo in the commit log message
8170
6c4fdde87f90 cvsps: add test for merge detection (issue1615).
Greg Ward <greg-hg@gerg.ca>
parents:
diff changeset
166
12521
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
167 $ cvsci -m"fix file1 [MERGE from v1-1]"
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
168 cvs commit: Examining .
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
169 $ cvs -Q tag -d unmerged
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
170
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
171 convert to hg
8170
6c4fdde87f90 cvsps: add test for merge detection (issue1615).
Greg Ward <greg-hg@gerg.ca>
parents:
diff changeset
172
12521
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
173 $ cd ..
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
174 $ hg convert proj proj.hg
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
175 initializing destination proj.hg repository
12640
6cc4b14fb76b tests: remove redundant globs
Mads Kiilerich <mads@kiilerich.com>
parents: 12585
diff changeset
176 connecting to $TESTTMP/cvsrepo
12521
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
177 scanning source...
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
178 collecting CVS rlog
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
179 12 log entries
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
180 creating changesets
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
181 warning: CVS commit message references non-existent branch 'v1-1':
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
182 fix file1 [MERGE from v1-1]
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
183 10 changeset entries
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
184 sorting...
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
185 converting...
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
186 9 add file1 on trunk
18376
13d73bf6be29 convert: make toposort order stable when multiple orderings are possible
Mads Kiilerich <mads@kiilerich.com>
parents: 14824
diff changeset
187 8 unrelated change
13d73bf6be29 convert: make toposort order stable when multiple orderings are possible
Mads Kiilerich <mads@kiilerich.com>
parents: 14824
diff changeset
188 7 add text
12521
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
189 6 add text [MERGE from v1_0]
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
190 5 add text [MERGE from v1_1]
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
191 4 add file2 on trunk
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
192 3 add other text
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
193 2 add other text [MERGE from HEAD]
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
194 1 fix file1
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
195 0 fix file1 [MERGE from v1-1]
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
196
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
197 complete log
8170
6c4fdde87f90 cvsps: add test for merge detection (issue1615).
Greg Ward <greg-hg@gerg.ca>
parents:
diff changeset
198
12521
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
199 $ template="{rev}: '{branches}' {desc}\n"
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
200 $ hg -R proj.hg log --template="$template"
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
201 9: '' fix file1 [MERGE from v1-1]
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
202 8: 'v1_1' fix file1
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
203 7: 'v1_1' add other text [MERGE from HEAD]
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
204 6: '' add other text
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
205 5: '' add file2 on trunk
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
206 4: '' add text [MERGE from v1_1]
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
207 3: 'v1_1' add text [MERGE from v1_0]
18376
13d73bf6be29 convert: make toposort order stable when multiple orderings are possible
Mads Kiilerich <mads@kiilerich.com>
parents: 14824
diff changeset
208 2: 'v1_0' add text
13d73bf6be29 convert: make toposort order stable when multiple orderings are possible
Mads Kiilerich <mads@kiilerich.com>
parents: 14824
diff changeset
209 1: 'v1_1' unrelated change
12521
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
210 0: '' add file1 on trunk
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
211
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
212 graphical log
8171
4e5bd9b97bb3 cvsps: fix crash when log message refers to non-existent branch (issue1615).
Greg Ward <greg-hg@gerg.ca>
parents: 8170
diff changeset
213
20117
aa9385f983fa tests: don't load unnecessary graphlog extension
Martin Geisler <martin@geisler.net>
parents: 18376
diff changeset
214 $ hg -R proj.hg log -G --template="$template"
12521
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
215 o 9: '' fix file1 [MERGE from v1-1]
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
216 |
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
217 | o 8: 'v1_1' fix file1
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
218 | |
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
219 | o 7: 'v1_1' add other text [MERGE from HEAD]
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
220 |/|
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
221 o | 6: '' add other text
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
222 | |
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
223 o | 5: '' add file2 on trunk
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
224 | |
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
225 o | 4: '' add text [MERGE from v1_1]
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
226 |\|
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
227 | o 3: 'v1_1' add text [MERGE from v1_0]
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
228 | |\
18376
13d73bf6be29 convert: make toposort order stable when multiple orderings are possible
Mads Kiilerich <mads@kiilerich.com>
parents: 14824
diff changeset
229 +---o 2: 'v1_0' add text
12521
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
230 | |
18376
13d73bf6be29 convert: make toposort order stable when multiple orderings are possible
Mads Kiilerich <mads@kiilerich.com>
parents: 14824
diff changeset
231 | o 1: 'v1_1' unrelated change
12521
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
232 |/
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
233 o 0: '' add file1 on trunk
539480ce1c89 tests: unify test-convert-cvs-detectmerge
Matt Mackall <mpm@selenic.com>
parents: 9543
diff changeset
234