tests/test-ancestor.py.out
author Simon Sapin <simon.sapin@octobus.net>
Tue, 30 Mar 2021 14:15:23 +0200
changeset 47093 787ff5d21bcd
parent 40959 d097dd0afc19
permissions -rw-r--r--
dirstate-tree: Make Rust DirstateMap bindings go through a trait object This changeset starts a series that adds an experiment to make status faster by changing the dirstate (first only in memory and later also on disk) to be shaped as a tree matching the directory structure, instead of the current flat collection of entries. The status algorithm can then traverse this tree dirstate at the same time as it traverses the filesystem. We (Octobus) have made prototypes that show promising results but are prone to bitrot. We would like to start upstreaming some experimental Rust code that goes in this direction, but to avoid disrupting users it should only be enabled by some run-time opt-in while keeping the existing dirstate structure and status algorithm as-is. The `DirstateMap` type and `status` function look like the appropriate boundary. This adds a new trait that abstracts everything Python bindings need and makes those bindings go through a `dyn` trait object. Later we’ll have two implementations of this trait, and the same bindings can use either. Differential Revision: https://phab.mercurial-scm.org/D10362
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
40959
d097dd0afc19 rust: translation of missingancestors
Georges Racinet <gracinet@anybox.fr>
parents: 39536
diff changeset
     1
% removeancestorsfrom(), example 1
d097dd0afc19 rust: translation of missingancestors
Georges Racinet <gracinet@anybox.fr>
parents: 39536
diff changeset
     2
remaining (sorted): [5, 6, 8, 9]
d097dd0afc19 rust: translation of missingancestors
Georges Racinet <gracinet@anybox.fr>
parents: 39536
diff changeset
     3
% removeancestorsfrom(), example 2
d097dd0afc19 rust: translation of missingancestors
Georges Racinet <gracinet@anybox.fr>
parents: 39536
diff changeset
     4
remaining (sorted): [11, 12, 13, 14]
d097dd0afc19 rust: translation of missingancestors
Georges Racinet <gracinet@anybox.fr>
parents: 39536
diff changeset
     5
% removeancestorsfrom(), example 3
d097dd0afc19 rust: translation of missingancestors
Georges Racinet <gracinet@anybox.fr>
parents: 39536
diff changeset
     6
remaining (sorted): [3, 5]
d097dd0afc19 rust: translation of missingancestors
Georges Racinet <gracinet@anybox.fr>
parents: 39536
diff changeset
     7
% missingancestors(), example 1
d097dd0afc19 rust: translation of missingancestors
Georges Racinet <gracinet@anybox.fr>
parents: 39536
diff changeset
     8
return [3, 7, 11]
d097dd0afc19 rust: translation of missingancestors
Georges Racinet <gracinet@anybox.fr>
parents: 39536
diff changeset
     9
% missingancestors(), example 2
d097dd0afc19 rust: translation of missingancestors
Georges Racinet <gracinet@anybox.fr>
parents: 39536
diff changeset
    10
return [5, 10]
d097dd0afc19 rust: translation of missingancestors
Georges Racinet <gracinet@anybox.fr>
parents: 39536
diff changeset
    11
% missingancestors(), example 3
d097dd0afc19 rust: translation of missingancestors
Georges Racinet <gracinet@anybox.fr>
parents: 39536
diff changeset
    12
return [3, 6, 9, 11]
d097dd0afc19 rust: translation of missingancestors
Georges Racinet <gracinet@anybox.fr>
parents: 39536
diff changeset
    13
% removeancestorsfrom(), bigger graph
d097dd0afc19 rust: translation of missingancestors
Georges Racinet <gracinet@anybox.fr>
parents: 39536
diff changeset
    14
Ok
18091
f7f8159caad3 ancestor: add lazy membership testing to lazyancestors
Siddharth Agarwal <sid0@fb.com>
parents: 18079
diff changeset
    15
% lazy ancestor set for [], stoprev = 0, inclusive = False
23329
c6cd4b8b76f8 test-ancestor: test iteration for lazyancestors
Siddharth Agarwal <sid0@fb.com>
parents: 22355
diff changeset
    16
membership: []
c6cd4b8b76f8 test-ancestor: test iteration for lazyancestors
Siddharth Agarwal <sid0@fb.com>
parents: 22355
diff changeset
    17
iteration:  []
18091
f7f8159caad3 ancestor: add lazy membership testing to lazyancestors
Siddharth Agarwal <sid0@fb.com>
parents: 18079
diff changeset
    18
% lazy ancestor set for [11, 13], stoprev = 0, inclusive = False
23329
c6cd4b8b76f8 test-ancestor: test iteration for lazyancestors
Siddharth Agarwal <sid0@fb.com>
parents: 22355
diff changeset
    19
membership: [7, 8, 3, 4, 1, 0]
39473
b6db2e80a9ce ancestors: actually iterate over ancestors in topological order (issue5979)
Boris Feld <boris.feld@octobus.net>
parents: 23331
diff changeset
    20
iteration:  [8, 7, 4, 3, 2, 1, 0]
22355
731b2a90983b test-ancestor: add a test for `ancestor` with ancestry within the initset
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 18091
diff changeset
    21
% lazy ancestor set for [1, 3], stoprev = 0, inclusive = False
23329
c6cd4b8b76f8 test-ancestor: test iteration for lazyancestors
Siddharth Agarwal <sid0@fb.com>
parents: 22355
diff changeset
    22
membership: [1, 0]
39473
b6db2e80a9ce ancestors: actually iterate over ancestors in topological order (issue5979)
Boris Feld <boris.feld@octobus.net>
parents: 23331
diff changeset
    23
iteration:  [1, 0]
18091
f7f8159caad3 ancestor: add lazy membership testing to lazyancestors
Siddharth Agarwal <sid0@fb.com>
parents: 18079
diff changeset
    24
% lazy ancestor set for [11, 13], stoprev = 0, inclusive = True
23329
c6cd4b8b76f8 test-ancestor: test iteration for lazyancestors
Siddharth Agarwal <sid0@fb.com>
parents: 22355
diff changeset
    25
membership: [11, 13, 7, 8, 3, 4, 1, 0]
39474
a60dae060bc8 ancestors: ensure a consistent order even in the "inclusive" case
Boris Feld <boris.feld@octobus.net>
parents: 39473
diff changeset
    26
iteration:  [13, 11, 8, 7, 4, 3, 2, 1, 0]
18091
f7f8159caad3 ancestor: add lazy membership testing to lazyancestors
Siddharth Agarwal <sid0@fb.com>
parents: 18079
diff changeset
    27
% lazy ancestor set for [11, 13], stoprev = 6, inclusive = False
23329
c6cd4b8b76f8 test-ancestor: test iteration for lazyancestors
Siddharth Agarwal <sid0@fb.com>
parents: 22355
diff changeset
    28
membership: [7, 8]
39473
b6db2e80a9ce ancestors: actually iterate over ancestors in topological order (issue5979)
Boris Feld <boris.feld@octobus.net>
parents: 23331
diff changeset
    29
iteration:  [8, 7]
18091
f7f8159caad3 ancestor: add lazy membership testing to lazyancestors
Siddharth Agarwal <sid0@fb.com>
parents: 18079
diff changeset
    30
% lazy ancestor set for [11, 13], stoprev = 6, inclusive = True
23329
c6cd4b8b76f8 test-ancestor: test iteration for lazyancestors
Siddharth Agarwal <sid0@fb.com>
parents: 22355
diff changeset
    31
membership: [11, 13, 7, 8]
39474
a60dae060bc8 ancestors: ensure a consistent order even in the "inclusive" case
Boris Feld <boris.feld@octobus.net>
parents: 39473
diff changeset
    32
iteration:  [13, 11, 8, 7]
39475
431068d7e9db ancestor: add test showing inconsistency between __iter__ and __contains__
Yuya Nishihara <yuya@tcha.org>
parents: 39474
diff changeset
    33
% lazy ancestor set for [11, 13], stoprev = 11, inclusive = True
431068d7e9db ancestor: add test showing inconsistency between __iter__ and __contains__
Yuya Nishihara <yuya@tcha.org>
parents: 39474
diff changeset
    34
membership: [11, 13]
431068d7e9db ancestor: add test showing inconsistency between __iter__ and __contains__
Yuya Nishihara <yuya@tcha.org>
parents: 39474
diff changeset
    35
iteration:  [13, 11]
431068d7e9db ancestor: add test showing inconsistency between __iter__ and __contains__
Yuya Nishihara <yuya@tcha.org>
parents: 39474
diff changeset
    36
% lazy ancestor set for [11, 13], stoprev = 12, inclusive = True
39476
7eadc9407867 ancestor: filter out initial revisions lower than stoprev
Yuya Nishihara <yuya@tcha.org>
parents: 39475
diff changeset
    37
membership: [13]
39475
431068d7e9db ancestor: add test showing inconsistency between __iter__ and __contains__
Yuya Nishihara <yuya@tcha.org>
parents: 39474
diff changeset
    38
iteration:  [13]
39536
bdb177923291 ancestor: optimize _lazyancestorsiter() for contiguous chains
Yuya Nishihara <yuya@tcha.org>
parents: 39476
diff changeset
    39
% lazy ancestor set for [10, 1], stoprev = 0, inclusive = True
bdb177923291 ancestor: optimize _lazyancestorsiter() for contiguous chains
Yuya Nishihara <yuya@tcha.org>
parents: 39476
diff changeset
    40
membership: [2, 10, 4, 5, 0, 1]
bdb177923291 ancestor: optimize _lazyancestorsiter() for contiguous chains
Yuya Nishihara <yuya@tcha.org>
parents: 39476
diff changeset
    41
iteration:  [10, 5, 4, 2, 1, 0]