Mercurial > hg
annotate tests/test-pull-pull-corruption.t @ 33377:5d63e5f40bea
revset: define successors revset
This revset returns all successors, including transit nodes and the source
nodes (to be consistent with existing revsets like "ancestors").
To filter out transit nodes, use `successors(X)-obsolete()`.
To filter out divergent case, use `successors(X)-divergent()-obsolete()`.
The revset could be useful to define rebase destination, like:
`max(successors(BASE)-divergent()-obsolete())`. The `max` is to deal with
splits.
There are other implementations where `successors` returns just one level of
successors, and `allsuccessors` returns everything. I think `successors`
returning all successors by default is more user friendly. We have seen
cases in production where people use 1-level `successors` while they really
want `allsuccessors`. So it seems better to just have one single revset
returning all successors by default to avoid user errors.
In the future we might want to add `depth` keyword argument to it and for
other revsets like `ancestors` etc. Or even build some flexible indexing
syntax [1] to satisfy people having the depth limit requirement.
[1]: https://www.mercurial-scm.org/pipermail/mercurial-devel/2017-July/101140.html
author | Jun Wu <quark@fb.com> |
---|---|
date | Mon, 10 Jul 2017 10:56:40 -0700 |
parents | f2719b387380 |
children | eb586ed5d8ce |
rev | line source |
---|---|
12481
70ef9b470efe
tests: unify test-pull-pull-corruption
Matt Mackall <mpm@selenic.com>
parents:
1785
diff
changeset
|
1 Corrupt an hg repo with two pulls. |
70ef9b470efe
tests: unify test-pull-pull-corruption
Matt Mackall <mpm@selenic.com>
parents:
1785
diff
changeset
|
2 create one repo with a long history |
70ef9b470efe
tests: unify test-pull-pull-corruption
Matt Mackall <mpm@selenic.com>
parents:
1785
diff
changeset
|
3 |
70ef9b470efe
tests: unify test-pull-pull-corruption
Matt Mackall <mpm@selenic.com>
parents:
1785
diff
changeset
|
4 $ hg init source1 |
70ef9b470efe
tests: unify test-pull-pull-corruption
Matt Mackall <mpm@selenic.com>
parents:
1785
diff
changeset
|
5 $ cd source1 |
70ef9b470efe
tests: unify test-pull-pull-corruption
Matt Mackall <mpm@selenic.com>
parents:
1785
diff
changeset
|
6 $ touch foo |
70ef9b470efe
tests: unify test-pull-pull-corruption
Matt Mackall <mpm@selenic.com>
parents:
1785
diff
changeset
|
7 $ hg add foo |
70ef9b470efe
tests: unify test-pull-pull-corruption
Matt Mackall <mpm@selenic.com>
parents:
1785
diff
changeset
|
8 $ for i in 1 2 3 4 5 6 7 8 9 10; do |
70ef9b470efe
tests: unify test-pull-pull-corruption
Matt Mackall <mpm@selenic.com>
parents:
1785
diff
changeset
|
9 > echo $i >> foo |
70ef9b470efe
tests: unify test-pull-pull-corruption
Matt Mackall <mpm@selenic.com>
parents:
1785
diff
changeset
|
10 > hg ci -m $i |
70ef9b470efe
tests: unify test-pull-pull-corruption
Matt Mackall <mpm@selenic.com>
parents:
1785
diff
changeset
|
11 > done |
70ef9b470efe
tests: unify test-pull-pull-corruption
Matt Mackall <mpm@selenic.com>
parents:
1785
diff
changeset
|
12 $ cd .. |
70ef9b470efe
tests: unify test-pull-pull-corruption
Matt Mackall <mpm@selenic.com>
parents:
1785
diff
changeset
|
13 |
70ef9b470efe
tests: unify test-pull-pull-corruption
Matt Mackall <mpm@selenic.com>
parents:
1785
diff
changeset
|
14 create one repo with a shorter history |
1785
81ca1a9bd061
Added test cases for repo corruption fixed in 2e0a288ca93e (issue132)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
15 |
12481
70ef9b470efe
tests: unify test-pull-pull-corruption
Matt Mackall <mpm@selenic.com>
parents:
1785
diff
changeset
|
16 $ hg clone -r 0 source1 source2 |
70ef9b470efe
tests: unify test-pull-pull-corruption
Matt Mackall <mpm@selenic.com>
parents:
1785
diff
changeset
|
17 adding changesets |
70ef9b470efe
tests: unify test-pull-pull-corruption
Matt Mackall <mpm@selenic.com>
parents:
1785
diff
changeset
|
18 adding manifests |
70ef9b470efe
tests: unify test-pull-pull-corruption
Matt Mackall <mpm@selenic.com>
parents:
1785
diff
changeset
|
19 adding file changes |
70ef9b470efe
tests: unify test-pull-pull-corruption
Matt Mackall <mpm@selenic.com>
parents:
1785
diff
changeset
|
20 added 1 changesets with 1 changes to 1 files |
70ef9b470efe
tests: unify test-pull-pull-corruption
Matt Mackall <mpm@selenic.com>
parents:
1785
diff
changeset
|
21 updating to branch default |
70ef9b470efe
tests: unify test-pull-pull-corruption
Matt Mackall <mpm@selenic.com>
parents:
1785
diff
changeset
|
22 1 files updated, 0 files merged, 0 files removed, 0 files unresolved |
70ef9b470efe
tests: unify test-pull-pull-corruption
Matt Mackall <mpm@selenic.com>
parents:
1785
diff
changeset
|
23 $ cd source2 |
70ef9b470efe
tests: unify test-pull-pull-corruption
Matt Mackall <mpm@selenic.com>
parents:
1785
diff
changeset
|
24 $ echo a >> foo |
70ef9b470efe
tests: unify test-pull-pull-corruption
Matt Mackall <mpm@selenic.com>
parents:
1785
diff
changeset
|
25 $ hg ci -m a |
70ef9b470efe
tests: unify test-pull-pull-corruption
Matt Mackall <mpm@selenic.com>
parents:
1785
diff
changeset
|
26 $ cd .. |
70ef9b470efe
tests: unify test-pull-pull-corruption
Matt Mackall <mpm@selenic.com>
parents:
1785
diff
changeset
|
27 |
70ef9b470efe
tests: unify test-pull-pull-corruption
Matt Mackall <mpm@selenic.com>
parents:
1785
diff
changeset
|
28 create a third repo to pull both other repos into it |
70ef9b470efe
tests: unify test-pull-pull-corruption
Matt Mackall <mpm@selenic.com>
parents:
1785
diff
changeset
|
29 |
70ef9b470efe
tests: unify test-pull-pull-corruption
Matt Mackall <mpm@selenic.com>
parents:
1785
diff
changeset
|
30 $ hg init corrupted |
70ef9b470efe
tests: unify test-pull-pull-corruption
Matt Mackall <mpm@selenic.com>
parents:
1785
diff
changeset
|
31 $ cd corrupted |
70ef9b470efe
tests: unify test-pull-pull-corruption
Matt Mackall <mpm@selenic.com>
parents:
1785
diff
changeset
|
32 |
70ef9b470efe
tests: unify test-pull-pull-corruption
Matt Mackall <mpm@selenic.com>
parents:
1785
diff
changeset
|
33 use a hook to make the second pull start while the first one is still running |
1785
81ca1a9bd061
Added test cases for repo corruption fixed in 2e0a288ca93e (issue132)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
34 |
12481
70ef9b470efe
tests: unify test-pull-pull-corruption
Matt Mackall <mpm@selenic.com>
parents:
1785
diff
changeset
|
35 $ echo '[hooks]' >> .hg/hgrc |
70ef9b470efe
tests: unify test-pull-pull-corruption
Matt Mackall <mpm@selenic.com>
parents:
1785
diff
changeset
|
36 $ echo 'prechangegroup = sleep 5' >> .hg/hgrc |
70ef9b470efe
tests: unify test-pull-pull-corruption
Matt Mackall <mpm@selenic.com>
parents:
1785
diff
changeset
|
37 |
70ef9b470efe
tests: unify test-pull-pull-corruption
Matt Mackall <mpm@selenic.com>
parents:
1785
diff
changeset
|
38 start a pull... |
70ef9b470efe
tests: unify test-pull-pull-corruption
Matt Mackall <mpm@selenic.com>
parents:
1785
diff
changeset
|
39 |
16481
37e0872b5ced
tests: remove race in test-pull-pull-corruption.t
Mads Kiilerich <mads@kiilerich.com>
parents:
13439
diff
changeset
|
40 $ hg pull ../source1 > pull.out 2>&1 & |
12481
70ef9b470efe
tests: unify test-pull-pull-corruption
Matt Mackall <mpm@selenic.com>
parents:
1785
diff
changeset
|
41 |
70ef9b470efe
tests: unify test-pull-pull-corruption
Matt Mackall <mpm@selenic.com>
parents:
1785
diff
changeset
|
42 ... and start another pull before the first one has finished |
1785
81ca1a9bd061
Added test cases for repo corruption fixed in 2e0a288ca93e (issue132)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
43 |
12481
70ef9b470efe
tests: unify test-pull-pull-corruption
Matt Mackall <mpm@selenic.com>
parents:
1785
diff
changeset
|
44 $ sleep 1 |
70ef9b470efe
tests: unify test-pull-pull-corruption
Matt Mackall <mpm@selenic.com>
parents:
1785
diff
changeset
|
45 $ hg pull ../source2 2>/dev/null |
70ef9b470efe
tests: unify test-pull-pull-corruption
Matt Mackall <mpm@selenic.com>
parents:
1785
diff
changeset
|
46 pulling from ../source2 |
70ef9b470efe
tests: unify test-pull-pull-corruption
Matt Mackall <mpm@selenic.com>
parents:
1785
diff
changeset
|
47 searching for changes |
70ef9b470efe
tests: unify test-pull-pull-corruption
Matt Mackall <mpm@selenic.com>
parents:
1785
diff
changeset
|
48 adding changesets |
70ef9b470efe
tests: unify test-pull-pull-corruption
Matt Mackall <mpm@selenic.com>
parents:
1785
diff
changeset
|
49 adding manifests |
70ef9b470efe
tests: unify test-pull-pull-corruption
Matt Mackall <mpm@selenic.com>
parents:
1785
diff
changeset
|
50 adding file changes |
70ef9b470efe
tests: unify test-pull-pull-corruption
Matt Mackall <mpm@selenic.com>
parents:
1785
diff
changeset
|
51 added 1 changesets with 1 changes to 1 files (+1 heads) |
70ef9b470efe
tests: unify test-pull-pull-corruption
Matt Mackall <mpm@selenic.com>
parents:
1785
diff
changeset
|
52 (run 'hg heads' to see heads, 'hg merge' to merge) |
16481
37e0872b5ced
tests: remove race in test-pull-pull-corruption.t
Mads Kiilerich <mads@kiilerich.com>
parents:
13439
diff
changeset
|
53 $ cat pull.out |
37e0872b5ced
tests: remove race in test-pull-pull-corruption.t
Mads Kiilerich <mads@kiilerich.com>
parents:
13439
diff
changeset
|
54 pulling from ../source1 |
37e0872b5ced
tests: remove race in test-pull-pull-corruption.t
Mads Kiilerich <mads@kiilerich.com>
parents:
13439
diff
changeset
|
55 requesting all changes |
37e0872b5ced
tests: remove race in test-pull-pull-corruption.t
Mads Kiilerich <mads@kiilerich.com>
parents:
13439
diff
changeset
|
56 adding changesets |
37e0872b5ced
tests: remove race in test-pull-pull-corruption.t
Mads Kiilerich <mads@kiilerich.com>
parents:
13439
diff
changeset
|
57 adding manifests |
37e0872b5ced
tests: remove race in test-pull-pull-corruption.t
Mads Kiilerich <mads@kiilerich.com>
parents:
13439
diff
changeset
|
58 adding file changes |
37e0872b5ced
tests: remove race in test-pull-pull-corruption.t
Mads Kiilerich <mads@kiilerich.com>
parents:
13439
diff
changeset
|
59 added 10 changesets with 10 changes to 1 files |
37e0872b5ced
tests: remove race in test-pull-pull-corruption.t
Mads Kiilerich <mads@kiilerich.com>
parents:
13439
diff
changeset
|
60 (run 'hg update' to get a working copy) |
1785
81ca1a9bd061
Added test cases for repo corruption fixed in 2e0a288ca93e (issue132)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
61 |
12481
70ef9b470efe
tests: unify test-pull-pull-corruption
Matt Mackall <mpm@selenic.com>
parents:
1785
diff
changeset
|
62 see the result |
1785
81ca1a9bd061
Added test cases for repo corruption fixed in 2e0a288ca93e (issue132)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
63 |
12481
70ef9b470efe
tests: unify test-pull-pull-corruption
Matt Mackall <mpm@selenic.com>
parents:
1785
diff
changeset
|
64 $ wait |
70ef9b470efe
tests: unify test-pull-pull-corruption
Matt Mackall <mpm@selenic.com>
parents:
1785
diff
changeset
|
65 $ hg verify |
70ef9b470efe
tests: unify test-pull-pull-corruption
Matt Mackall <mpm@selenic.com>
parents:
1785
diff
changeset
|
66 checking changesets |
70ef9b470efe
tests: unify test-pull-pull-corruption
Matt Mackall <mpm@selenic.com>
parents:
1785
diff
changeset
|
67 checking manifests |
70ef9b470efe
tests: unify test-pull-pull-corruption
Matt Mackall <mpm@selenic.com>
parents:
1785
diff
changeset
|
68 crosschecking files in changesets and manifests |
70ef9b470efe
tests: unify test-pull-pull-corruption
Matt Mackall <mpm@selenic.com>
parents:
1785
diff
changeset
|
69 checking files |
70ef9b470efe
tests: unify test-pull-pull-corruption
Matt Mackall <mpm@selenic.com>
parents:
1785
diff
changeset
|
70 1 files, 11 changesets, 11 total revisions |
16913
f2719b387380
tests: add missing trailing 'cd ..'
Mads Kiilerich <mads@kiilerich.com>
parents:
16481
diff
changeset
|
71 |
f2719b387380
tests: add missing trailing 'cd ..'
Mads Kiilerich <mads@kiilerich.com>
parents:
16481
diff
changeset
|
72 $ cd .. |