Mercurial > hg
annotate tests/test-merge-symlinks.t @ 41247:a89b20a49c13
rust-cpython: using MissingAncestors from Python code
As precedently done with LazyAncestors on cpython.rs, we test for the
presence of the 'rustext' module.
incrementalmissingrevs() has two callers within the Mercurial core:
`setdiscovery.partialdiscovery` and the `only()` revset.
This move shows a significant discovery performance improvement
in cases where the baseline is slow: using perfdiscovery on the PyPy
repos, prepared with `contrib/discovery-helper <repo> 50 100`, we
get averaged medians of 403ms with the Rust version vs 742ms without
(about 45% better).
But there are still indications that performance can be worse in cases
the baseline is fast, possibly due to the conversion from Python to
Rust and back becoming the bottleneck. We could measure this on
mozilla-central in cases were the delta is just a few changesets.
This requires confirmation, but if that's the reason, then an
upcoming `partialdiscovery` fully in Rust should solve the problem.
Differential Revision: https://phab.mercurial-scm.org/D5551
author | Georges Racinet <georges.racinet@octobus.net> |
---|---|
date | Fri, 30 Nov 2018 14:35:57 +0100 |
parents | 2b4c8fa08504 |
children | 42d2b31cee0b |
rev | line source |
---|---|
12459
15f07e8e4742
tests: unify test-merge-symlinks
Matt Mackall <mpm@selenic.com>
parents:
7080
diff
changeset
|
1 $ cat > echo.py <<EOF |
32938
b6776b34e44e
tests: use $PYTHON in #! so we always use the right Python
Augie Fackler <augie@google.com>
parents:
16913
diff
changeset
|
2 > #!$PYTHON |
33967
00658bb0dfd5
tests: update test-merge-symlinks to pass our import checker
Augie Fackler <raf@durin42.com>
parents:
33721
diff
changeset
|
3 > from __future__ import absolute_import, print_function |
00658bb0dfd5
tests: update test-merge-symlinks to pass our import checker
Augie Fackler <raf@durin42.com>
parents:
33721
diff
changeset
|
4 > import os |
00658bb0dfd5
tests: update test-merge-symlinks to pass our import checker
Augie Fackler <raf@durin42.com>
parents:
33721
diff
changeset
|
5 > import sys |
12459
15f07e8e4742
tests: unify test-merge-symlinks
Matt Mackall <mpm@selenic.com>
parents:
7080
diff
changeset
|
6 > try: |
15f07e8e4742
tests: unify test-merge-symlinks
Matt Mackall <mpm@selenic.com>
parents:
7080
diff
changeset
|
7 > import msvcrt |
15f07e8e4742
tests: unify test-merge-symlinks
Matt Mackall <mpm@selenic.com>
parents:
7080
diff
changeset
|
8 > msvcrt.setmode(sys.stdout.fileno(), os.O_BINARY) |
15f07e8e4742
tests: unify test-merge-symlinks
Matt Mackall <mpm@selenic.com>
parents:
7080
diff
changeset
|
9 > msvcrt.setmode(sys.stderr.fileno(), os.O_BINARY) |
15f07e8e4742
tests: unify test-merge-symlinks
Matt Mackall <mpm@selenic.com>
parents:
7080
diff
changeset
|
10 > except ImportError: |
15f07e8e4742
tests: unify test-merge-symlinks
Matt Mackall <mpm@selenic.com>
parents:
7080
diff
changeset
|
11 > pass |
15f07e8e4742
tests: unify test-merge-symlinks
Matt Mackall <mpm@selenic.com>
parents:
7080
diff
changeset
|
12 > |
15f07e8e4742
tests: unify test-merge-symlinks
Matt Mackall <mpm@selenic.com>
parents:
7080
diff
changeset
|
13 > for k in ('HG_FILE', 'HG_MY_ISLINK', 'HG_OTHER_ISLINK', 'HG_BASE_ISLINK'): |
33721
24849d53697d
tests: clean up many print statements to be print functions instead
Augie Fackler <augie@google.com>
parents:
32940
diff
changeset
|
14 > print(k, os.environ[k]) |
12459
15f07e8e4742
tests: unify test-merge-symlinks
Matt Mackall <mpm@selenic.com>
parents:
7080
diff
changeset
|
15 > EOF |
7080
a6477aa893b8
tests: Windows compatibility fixes
Patrick Mezard <pmezard@gmail.com>
parents:
5408
diff
changeset
|
16 |
12459
15f07e8e4742
tests: unify test-merge-symlinks
Matt Mackall <mpm@selenic.com>
parents:
7080
diff
changeset
|
17 Create 2 heads containing the same file, once as |
15f07e8e4742
tests: unify test-merge-symlinks
Matt Mackall <mpm@selenic.com>
parents:
7080
diff
changeset
|
18 a file, once as a link. Bundle was generated with: |
5391
786c1206a029
Test *_ISLINK merge environment vars
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
19 |
5408
36794dbe66a3
Test workingctx exec/link bit for copies.
Patrick Mezard <pmezard@gmail.com>
parents:
5391
diff
changeset
|
20 # hg init t |
36794dbe66a3
Test workingctx exec/link bit for copies.
Patrick Mezard <pmezard@gmail.com>
parents:
5391
diff
changeset
|
21 # cd t |
36794dbe66a3
Test workingctx exec/link bit for copies.
Patrick Mezard <pmezard@gmail.com>
parents:
5391
diff
changeset
|
22 # echo a > a |
36794dbe66a3
Test workingctx exec/link bit for copies.
Patrick Mezard <pmezard@gmail.com>
parents:
5391
diff
changeset
|
23 # hg ci -qAm t0 -d '0 0' |
36794dbe66a3
Test workingctx exec/link bit for copies.
Patrick Mezard <pmezard@gmail.com>
parents:
5391
diff
changeset
|
24 # echo l > l |
36794dbe66a3
Test workingctx exec/link bit for copies.
Patrick Mezard <pmezard@gmail.com>
parents:
5391
diff
changeset
|
25 # hg ci -qAm t1 -d '1 0' |
36794dbe66a3
Test workingctx exec/link bit for copies.
Patrick Mezard <pmezard@gmail.com>
parents:
5391
diff
changeset
|
26 # hg up -C 0 |
36794dbe66a3
Test workingctx exec/link bit for copies.
Patrick Mezard <pmezard@gmail.com>
parents:
5391
diff
changeset
|
27 # ln -s a l |
36794dbe66a3
Test workingctx exec/link bit for copies.
Patrick Mezard <pmezard@gmail.com>
parents:
5391
diff
changeset
|
28 # hg ci -qAm t2 -d '2 0' |
36794dbe66a3
Test workingctx exec/link bit for copies.
Patrick Mezard <pmezard@gmail.com>
parents:
5391
diff
changeset
|
29 # echo l2 > l2 |
36794dbe66a3
Test workingctx exec/link bit for copies.
Patrick Mezard <pmezard@gmail.com>
parents:
5391
diff
changeset
|
30 # hg ci -qAm t3 -d '3 0' |
36794dbe66a3
Test workingctx exec/link bit for copies.
Patrick Mezard <pmezard@gmail.com>
parents:
5391
diff
changeset
|
31 |
12459
15f07e8e4742
tests: unify test-merge-symlinks
Matt Mackall <mpm@selenic.com>
parents:
7080
diff
changeset
|
32 $ hg init t |
15f07e8e4742
tests: unify test-merge-symlinks
Matt Mackall <mpm@selenic.com>
parents:
7080
diff
changeset
|
33 $ cd t |
37336
5d10f41ddcc4
tests: use `hg unbundle` instead of `hg pull` in some tests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33967
diff
changeset
|
34 $ hg -q unbundle "$TESTDIR/bundles/test-merge-symlinks.hg" |
12459
15f07e8e4742
tests: unify test-merge-symlinks
Matt Mackall <mpm@selenic.com>
parents:
7080
diff
changeset
|
35 $ hg up -C 3 |
15f07e8e4742
tests: unify test-merge-symlinks
Matt Mackall <mpm@selenic.com>
parents:
7080
diff
changeset
|
36 3 files updated, 0 files merged, 0 files removed, 0 files unresolved |
15f07e8e4742
tests: unify test-merge-symlinks
Matt Mackall <mpm@selenic.com>
parents:
7080
diff
changeset
|
37 |
15f07e8e4742
tests: unify test-merge-symlinks
Matt Mackall <mpm@selenic.com>
parents:
7080
diff
changeset
|
38 Merge them and display *_ISLINK vars |
15f07e8e4742
tests: unify test-merge-symlinks
Matt Mackall <mpm@selenic.com>
parents:
7080
diff
changeset
|
39 merge heads |
5391
786c1206a029
Test *_ISLINK merge environment vars
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
40 |
39946
2b4c8fa08504
py3: quote $PYTHON in test-merge-symlinks.t
Matt Harbison <matt_harbison@yahoo.com>
parents:
37336
diff
changeset
|
41 $ hg merge --tool="\"$PYTHON\" ../echo.py" |
13439
d724a69309e0
util: flush stdout before calling external processes
Mads Kiilerich <mads@kiilerich.com>
parents:
12788
diff
changeset
|
42 merging l |
12459
15f07e8e4742
tests: unify test-merge-symlinks
Matt Mackall <mpm@selenic.com>
parents:
7080
diff
changeset
|
43 HG_FILE l |
15f07e8e4742
tests: unify test-merge-symlinks
Matt Mackall <mpm@selenic.com>
parents:
7080
diff
changeset
|
44 HG_MY_ISLINK 1 |
15f07e8e4742
tests: unify test-merge-symlinks
Matt Mackall <mpm@selenic.com>
parents:
7080
diff
changeset
|
45 HG_OTHER_ISLINK 0 |
15f07e8e4742
tests: unify test-merge-symlinks
Matt Mackall <mpm@selenic.com>
parents:
7080
diff
changeset
|
46 HG_BASE_ISLINK 0 |
15f07e8e4742
tests: unify test-merge-symlinks
Matt Mackall <mpm@selenic.com>
parents:
7080
diff
changeset
|
47 0 files updated, 1 files merged, 0 files removed, 0 files unresolved |
15f07e8e4742
tests: unify test-merge-symlinks
Matt Mackall <mpm@selenic.com>
parents:
7080
diff
changeset
|
48 (branch merge, don't forget to commit) |
5408
36794dbe66a3
Test workingctx exec/link bit for copies.
Patrick Mezard <pmezard@gmail.com>
parents:
5391
diff
changeset
|
49 |
12459
15f07e8e4742
tests: unify test-merge-symlinks
Matt Mackall <mpm@selenic.com>
parents:
7080
diff
changeset
|
50 Test working directory symlink bit calculation wrt copies, |
15f07e8e4742
tests: unify test-merge-symlinks
Matt Mackall <mpm@selenic.com>
parents:
7080
diff
changeset
|
51 especially on non-supporting systems. |
15f07e8e4742
tests: unify test-merge-symlinks
Matt Mackall <mpm@selenic.com>
parents:
7080
diff
changeset
|
52 merge working directory |
15f07e8e4742
tests: unify test-merge-symlinks
Matt Mackall <mpm@selenic.com>
parents:
7080
diff
changeset
|
53 |
15f07e8e4742
tests: unify test-merge-symlinks
Matt Mackall <mpm@selenic.com>
parents:
7080
diff
changeset
|
54 $ hg up -C 2 |
15f07e8e4742
tests: unify test-merge-symlinks
Matt Mackall <mpm@selenic.com>
parents:
7080
diff
changeset
|
55 1 files updated, 0 files merged, 1 files removed, 0 files unresolved |
15f07e8e4742
tests: unify test-merge-symlinks
Matt Mackall <mpm@selenic.com>
parents:
7080
diff
changeset
|
56 $ hg copy l l2 |
39946
2b4c8fa08504
py3: quote $PYTHON in test-merge-symlinks.t
Matt Harbison <matt_harbison@yahoo.com>
parents:
37336
diff
changeset
|
57 $ HGMERGE="\"$PYTHON\" ../echo.py" hg up 3 |
13439
d724a69309e0
util: flush stdout before calling external processes
Mads Kiilerich <mads@kiilerich.com>
parents:
12788
diff
changeset
|
58 merging l2 |
12459
15f07e8e4742
tests: unify test-merge-symlinks
Matt Mackall <mpm@selenic.com>
parents:
7080
diff
changeset
|
59 HG_FILE l2 |
15f07e8e4742
tests: unify test-merge-symlinks
Matt Mackall <mpm@selenic.com>
parents:
7080
diff
changeset
|
60 HG_MY_ISLINK 1 |
15f07e8e4742
tests: unify test-merge-symlinks
Matt Mackall <mpm@selenic.com>
parents:
7080
diff
changeset
|
61 HG_OTHER_ISLINK 0 |
15f07e8e4742
tests: unify test-merge-symlinks
Matt Mackall <mpm@selenic.com>
parents:
7080
diff
changeset
|
62 HG_BASE_ISLINK 0 |
15f07e8e4742
tests: unify test-merge-symlinks
Matt Mackall <mpm@selenic.com>
parents:
7080
diff
changeset
|
63 0 files updated, 1 files merged, 0 files removed, 0 files unresolved |
16913
f2719b387380
tests: add missing trailing 'cd ..'
Mads Kiilerich <mads@kiilerich.com>
parents:
16907
diff
changeset
|
64 |
f2719b387380
tests: add missing trailing 'cd ..'
Mads Kiilerich <mads@kiilerich.com>
parents:
16907
diff
changeset
|
65 $ cd .. |