Mercurial > hg
annotate tests/test-rebase-brute-force.t @ 35816:f6ca1e11d8b4 stable
revset: evaluate filesets against each revision for 'file()' (issue5778)
After f2aeff8a87b6, the fileset was evaluated to a set of files against the
working directory, and then those files were applied against each revision. The
result was nonsense. For example, `hg log -r 'file("set:exec()")'` on the
Mercurial repo listed revision 0 because it has the `hg` script, which is
currently +x. But that bit wasn't applied until revision 280 (which
'contains()' properly indicates).
This technique was borrowed from checkstatus(), which services adds(),
modifies(), and removes(), so it seems safe enough. The 'r:' case is explicitly
assigned to wdirrev, freeing up rev=None to mean "re-evaluate at each revision".
The distinction is important to avoid behavior changes with `hg log set:...`
(test-largefiles-misc.t and test-fileset-generated.t drop current log output
without this). I'm not sure what the right behavior for that is (1fd352aa08fc
explicitly enabled this behavior for graphlog), but the day before the release
isn't the time to experiment.
author | Matt Harbison <matt_harbison@yahoo.com> |
---|---|
date | Sun, 28 Jan 2018 14:08:59 -0500 |
parents | 7f183c643eb6 |
children |
rev | line source |
---|---|
33708 | 1 $ cat >> $HGRCPATH <<EOF |
2 > [extensions] | |
3 > drawdag=$TESTDIR/drawdag.py | |
4 > bruterebase=$TESTDIR/bruterebase.py | |
5 > [experimental] | |
34866
1644623ab096
config: use 'experimental.evolution.create-markers'
Boris Feld <boris.feld@octobus.net>
parents:
33789
diff
changeset
|
6 > evolution.createmarkers=True |
34867
7f183c643eb6
config: use 'experimental.evolution.allowunstable'
Boris Feld <boris.feld@octobus.net>
parents:
34866
diff
changeset
|
7 > evolution.allowunstable=True |
33708 | 8 > EOF |
9 $ init() { | |
10 > N=`expr ${N:-0} + 1` | |
11 > cd $TESTTMP && hg init repo$N && cd repo$N | |
12 > hg debugdrawdag | |
13 > } | |
14 | |
15 Source looks like "N" | |
16 | |
17 $ init <<'EOS' | |
18 > C D | |
19 > |\| | |
20 > A B Z | |
21 > EOS | |
22 | |
23 $ hg debugbruterebase 'all()-Z' Z | |
24 A: A':Z | |
25 B: B':Z | |
26 AB: A':Z B':Z | |
33789
19f495fef0a3
rebase: change "result would have 3 parent" error message (BC)
Jun Wu <quark@fb.com>
parents:
33786
diff
changeset
|
27 C: ABORT: cannot rebase 3:a35c07e8a2a4 without moving at least one of its parents |
33708 | 28 AC: A':Z C':A'B |
29 BC: B':Z C':B'A | |
30 ABC: A':Z B':Z C':A'B' | |
31 D: D':Z | |
32 AD: A':Z D':Z | |
33 BD: B':Z D':B' | |
34 ABD: A':Z B':Z D':B' | |
33789
19f495fef0a3
rebase: change "result would have 3 parent" error message (BC)
Jun Wu <quark@fb.com>
parents:
33786
diff
changeset
|
35 CD: ABORT: cannot rebase 3:a35c07e8a2a4 without moving at least one of its parents |
33786
0975506120fb
rebase: rewrite core algorithm (issue5578) (issue5630)
Jun Wu <quark@fb.com>
parents:
33708
diff
changeset
|
36 ACD: A':Z C':A'B D':Z |
33708 | 37 BCD: B':Z C':B'A D':B' |
38 ABCD: A':Z B':Z C':A'B' D':B' | |
39 | |
40 Moving backwards | |
41 | |
42 $ init <<'EOS' | |
43 > C | |
44 > |\ | |
45 > A B | |
46 > | | |
47 > Z | |
48 > EOS | |
49 $ hg debugbruterebase 'all()-Z' Z | |
50 B: B':Z | |
51 A: | |
52 BA: B':Z | |
33789
19f495fef0a3
rebase: change "result would have 3 parent" error message (BC)
Jun Wu <quark@fb.com>
parents:
33786
diff
changeset
|
53 C: ABORT: cannot rebase 3:b8d7149b562b without moving at least one of its parents |
33708 | 54 BC: B':Z C':B'A |
55 AC: | |
33786
0975506120fb
rebase: rewrite core algorithm (issue5578) (issue5630)
Jun Wu <quark@fb.com>
parents:
33708
diff
changeset
|
56 BAC: B':Z C':B'A |