annotate tests/test-double-merge.t @ 46667:93e9f448273c

rhg: Add support for automatic fallback to Python `rhg` is a command-line application that can do a small subset of what `hg` can. It is written entirely in Rust, which avoids the cost of starting a Python interpreter and importing many Python modules. In a script that runs many `hg` commands, this cost can add up. However making users decide when to use `rhg` instead of `hg` is not practical as we want the subset of supported functionality to grow over time. Instead we introduce "fallback" behavior where, when `rhg` encounters something (a sub-command, a repository format, …) that is not implemented in Rust-only, it does nothing but silently start a subprocess of Python-based `hg` running the same command. That way `rhg` becomes a drop-in replacement for `hg` that sometimes goes faster. Whether Python is used should be an implementation detail not apparent to users (other than through speed). A new `fallback` value is added to the previously introduced `rhg.on-unsupported` configuration key. When in this mode, the new `rhg.fallback-executable` config is determine what command to use to run a Python-based `hg`. The previous `rhg.on-unsupported = abort-silent` configuration was designed to let a wrapper script call `rhg` and then fall back to `hg` based on the exit code. This is still available, but having fallback behavior built-in in rhg might be easier for users instead of leaving that script "as an exercise for the reader". Using a subprocess like this is not idea, especially when `rhg` is to be installed in `$PATH` as `hg`, since the other `hg.py` executable needs to still be available… somewhere. Eventually this could be replaced by using PyOxidizer to a have a single executable that embeds a Python interpreter, but only starts it when needed. Differential Revision: https://phab.mercurial-scm.org/D10093
author Simon Sapin <simon.sapin@octobus.net>
date Mon, 01 Mar 2021 20:36:06 +0100
parents 69429972ff1f
children 38941a28406a
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
11973
b773ca489fd3 tests: unify test-double-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 8834
diff changeset
1 $ hg init repo
b773ca489fd3 tests: unify test-double-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 8834
diff changeset
2 $ cd repo
5042
f191bc3916f7 merge: do early copy to deal with issue636
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
3
11973
b773ca489fd3 tests: unify test-double-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 8834
diff changeset
4 $ echo line 1 > foo
12156
4c94b6d0fb1c tests: remove unneeded -d flags
Martin Geisler <mg@lazybytes.net>
parents: 11973
diff changeset
5 $ hg ci -qAm 'add foo'
5042
f191bc3916f7 merge: do early copy to deal with issue636
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
6
11973
b773ca489fd3 tests: unify test-double-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 8834
diff changeset
7 copy foo to bar and change both files
b773ca489fd3 tests: unify test-double-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 8834
diff changeset
8 $ hg cp foo bar
b773ca489fd3 tests: unify test-double-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 8834
diff changeset
9 $ echo line 2-1 >> foo
b773ca489fd3 tests: unify test-double-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 8834
diff changeset
10 $ echo line 2-2 >> bar
12156
4c94b6d0fb1c tests: remove unneeded -d flags
Martin Geisler <mg@lazybytes.net>
parents: 11973
diff changeset
11 $ hg ci -m 'cp foo bar; change both'
5042
f191bc3916f7 merge: do early copy to deal with issue636
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
12
11973
b773ca489fd3 tests: unify test-double-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 8834
diff changeset
13 in another branch, change foo in a way that doesn't conflict with
b773ca489fd3 tests: unify test-double-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 8834
diff changeset
14 the other changes
b773ca489fd3 tests: unify test-double-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 8834
diff changeset
15 $ hg up -qC 0
b773ca489fd3 tests: unify test-double-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 8834
diff changeset
16 $ echo line 0 > foo
b773ca489fd3 tests: unify test-double-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 8834
diff changeset
17 $ hg cat foo >> foo
12156
4c94b6d0fb1c tests: remove unneeded -d flags
Martin Geisler <mg@lazybytes.net>
parents: 11973
diff changeset
18 $ hg ci -m 'change foo'
11973
b773ca489fd3 tests: unify test-double-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 8834
diff changeset
19 created new head
5042
f191bc3916f7 merge: do early copy to deal with issue636
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
20
11973
b773ca489fd3 tests: unify test-double-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 8834
diff changeset
21 we get conflicts that shouldn't be there
b773ca489fd3 tests: unify test-double-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 8834
diff changeset
22 $ hg merge -P
12156
4c94b6d0fb1c tests: remove unneeded -d flags
Martin Geisler <mg@lazybytes.net>
parents: 11973
diff changeset
23 changeset: 1:484bf6903104
11973
b773ca489fd3 tests: unify test-double-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 8834
diff changeset
24 user: test
12156
4c94b6d0fb1c tests: remove unneeded -d flags
Martin Geisler <mg@lazybytes.net>
parents: 11973
diff changeset
25 date: Thu Jan 01 00:00:00 1970 +0000
11973
b773ca489fd3 tests: unify test-double-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 8834
diff changeset
26 summary: cp foo bar; change both
b773ca489fd3 tests: unify test-double-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 8834
diff changeset
27
b773ca489fd3 tests: unify test-double-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 8834
diff changeset
28 $ hg merge --debug
b773ca489fd3 tests: unify test-double-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 8834
diff changeset
29 unmatched files in other:
b773ca489fd3 tests: unify test-double-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 8834
diff changeset
30 bar
16795
e9ae770eff1c merge: show renamed on one and deleted on the other side in debug output
Thomas Arendsen Hein <thomas@intevation.de>
parents: 15625
diff changeset
31 all copies found (* = to merge, ! = divergent, % = renamed and deleted):
44197
17e12938f8e7 copies: print debug information about copies per side/branch
Martin von Zweigbergk <martinvonz@google.com>
parents: 42167
diff changeset
32 on remote side:
17e12938f8e7 copies: print debug information about copies per side/branch
Martin von Zweigbergk <martinvonz@google.com>
parents: 42167
diff changeset
33 src: 'foo' -> dst: 'bar' *
11973
b773ca489fd3 tests: unify test-double-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 8834
diff changeset
34 checking for directory renames
b773ca489fd3 tests: unify test-double-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 8834
diff changeset
35 resolving manifests
18605
bcf29565d89f manifestmerge: pass in branchmerge and force separately
Siddharth Agarwal <sid0@fb.com>
parents: 18541
diff changeset
36 branchmerge: True, force: False, partial: False
15625
efdcce3fd2d5 merge: make debug output easier to read
Martin Geisler <mg@aragost.com>
parents: 12156
diff changeset
37 ancestor: e6dc8efe11cc, local: 6a0df1dad128+, remote: 484bf6903104
46072
69429972ff1f tests: correct the output order about starting a background thread for Windows
Matt Harbison <matt_harbison@yahoo.com>
parents: 44197
diff changeset
38 starting 4 threads for background file closing (?)
21391
cb15835456cb merge: change debug logging - test output changes but no real changes
Mads Kiilerich <madski@unity3d.com>
parents: 20945
diff changeset
39 preserving foo for resolve of bar
cb15835456cb merge: change debug logging - test output changes but no real changes
Mads Kiilerich <madski@unity3d.com>
parents: 20945
diff changeset
40 preserving foo for resolve of foo
26618
8e6d5b7317e6 merge.mergestate: perform all premerges before any merges (BC)
Siddharth Agarwal <sid0@fb.com>
parents: 26517
diff changeset
41 bar: remote copied from foo -> m (premerge)
27161
296d55def9c4 filemerge: add debug output for whether this is a change/delete conflict
Siddharth Agarwal <sid0@fb.com>
parents: 26618
diff changeset
42 picked tool ':merge' for bar (binary False symlink False changedelete False)
11973
b773ca489fd3 tests: unify test-double-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 8834
diff changeset
43 merging foo and bar to bar
12156
4c94b6d0fb1c tests: remove unneeded -d flags
Martin Geisler <mg@lazybytes.net>
parents: 11973
diff changeset
44 my bar@6a0df1dad128+ other bar@484bf6903104 ancestor foo@e6dc8efe11cc
11973
b773ca489fd3 tests: unify test-double-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 8834
diff changeset
45 premerge successful
26618
8e6d5b7317e6 merge.mergestate: perform all premerges before any merges (BC)
Siddharth Agarwal <sid0@fb.com>
parents: 26517
diff changeset
46 foo: versions differ -> m (premerge)
27161
296d55def9c4 filemerge: add debug output for whether this is a change/delete conflict
Siddharth Agarwal <sid0@fb.com>
parents: 26618
diff changeset
47 picked tool ':merge' for foo (binary False symlink False changedelete False)
11973
b773ca489fd3 tests: unify test-double-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 8834
diff changeset
48 merging foo
12156
4c94b6d0fb1c tests: remove unneeded -d flags
Martin Geisler <mg@lazybytes.net>
parents: 11973
diff changeset
49 my foo@6a0df1dad128+ other foo@484bf6903104 ancestor foo@e6dc8efe11cc
11973
b773ca489fd3 tests: unify test-double-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 8834
diff changeset
50 premerge successful
b773ca489fd3 tests: unify test-double-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 8834
diff changeset
51 0 files updated, 2 files merged, 0 files removed, 0 files unresolved
b773ca489fd3 tests: unify test-double-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 8834
diff changeset
52 (branch merge, don't forget to commit)
5042
f191bc3916f7 merge: do early copy to deal with issue636
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
53
11973
b773ca489fd3 tests: unify test-double-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 8834
diff changeset
54 contents of foo
b773ca489fd3 tests: unify test-double-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 8834
diff changeset
55 $ cat foo
b773ca489fd3 tests: unify test-double-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 8834
diff changeset
56 line 0
b773ca489fd3 tests: unify test-double-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 8834
diff changeset
57 line 1
b773ca489fd3 tests: unify test-double-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 8834
diff changeset
58 line 2-1
5042
f191bc3916f7 merge: do early copy to deal with issue636
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
59
11973
b773ca489fd3 tests: unify test-double-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 8834
diff changeset
60 contents of bar
b773ca489fd3 tests: unify test-double-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 8834
diff changeset
61 $ cat bar
b773ca489fd3 tests: unify test-double-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 8834
diff changeset
62 line 0
b773ca489fd3 tests: unify test-double-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 8834
diff changeset
63 line 1
b773ca489fd3 tests: unify test-double-merge
Pradeepkumar Gayam <in3xes@gmail.com>
parents: 8834
diff changeset
64 line 2-2
16913
f2719b387380 tests: add missing trailing 'cd ..'
Mads Kiilerich <mads@kiilerich.com>
parents: 16795
diff changeset
65
f2719b387380 tests: add missing trailing 'cd ..'
Mads Kiilerich <mads@kiilerich.com>
parents: 16795
diff changeset
66 $ cd ..