rust-hg-path: add method to get part of a path relative to a prefix
This will be used in the next patch in this series.
Differential Revision: https://phab.mercurial-scm.org/D7526
rust-matchers: improve `Matcher` trait ergonomics
`VisitChildrenSet` has no need to own the set, this will save allocations.
The `file_set` return type change is motivated by both ergonomics and... being
able to compile code.
The `AlwaysMatcher` does not store a `file_set`, which requires it to return an
owned `HashSet`, which in turn would change our return type to `Cow<&HgPath>`
(lifetimes omitted). This is both un-ergonomic and troublesome for more
complex lifetime issues (especially with the upcoming `FileMatcher` in the
following patch).
Differential Revision: https://phab.mercurial-scm.org/D7525
rust-dirs-multiset: use `AsRef` instead of concrete types when possible
I also renamed `vec` to `dirstate`, because it was not a great name.
Differential Revision: https://phab.mercurial-scm.org/D7524
logcmdutil: call _exthook() in changesettemplater
Class changesetprinter has an _exthook() method that is called in
_show() before the patch is displayed. Call the method as well in
changesettemplater._show().
Differential Revision: https://phab.mercurial-scm.org/D7505
phabricator: fix processing of tags/desc in getoldnodedrevmap()
It seems that the previous logic was wrong (it essentially comes
from changeset
3ab0d5767b54 where the result got accumulated instead of
early returned).
First of all, the "continue" in first "if m:" is useless because we're
at the end of the loop. Then, the algorithm seems weird because we will
process all predecessors of a node and possibly override
`toconfirm[node]` for each of these having a tag (maybe this doesn't
happen, but still). Finally, we would also override `toconfirm[node]`
when the "Differential Revision: " is found in changeset description.
Maybe this is not a big deal when there is no mix of local tag and
changeset description update?
The logic is changed so that the loop on predecessors stops upon first
match of a tag and so that the changeset description is only checked if
no tag was found. Therefore, `toconfirm[node]` is only set once.
Differential Revision: https://phab.mercurial-scm.org/D7513
tests: replace [[]] bashism with portable [] invocation
In this case nothing fancy is required.
Differential Revision: https://phab.mercurial-scm.org/D7596
rust-hg-path: implement `Display` for `HgPath` and `HgPathBuf`
This is useful when debugging, to get a human readable output instead of an
array of `u8`.
Differential Revision: https://phab.mercurial-scm.org/D7523