remotefilelog: fix {file_copies} template keyword
remotefilelog overrides templatekw.getrenamedfn(). I changed the
return type of that function in
ec37df9042f9 (templatekw: make
getrenamed() return only filename, not nodeid, 2018-03-26). So we need
to change remotefilelog too. The function is used by the {file_copies}
template keyword and by `hg log --copies`.
Differential Revision: https://phab.mercurial-scm.org/D5576
tests: demonstrate broken {file_copies} template with remotefilelog
Differential Revision: https://phab.mercurial-scm.org/D5575
contrib: update window title when possible in perf-revlog-write-plot.py
This is useful when comparing multiple graphs.
histedit: add newline after ui.log "# acttions to histedit" message
Differential Revision: https://phab.mercurial-scm.org/D5572
rust-cpython: bindings for MissingAncestors
The exposition is rather straightforward, except for the
remove_ancestors_from() method, which forces us to an inefficient
conversion between Python sets and Rust HashSets.
Two alternatives are proposed in comments:
- changing the inner API to "emit" the revision numbers to discard
this would be a substantial change, and it would be better only in the
cases where there are more to retain than to discard
- mutating the Python set directly: this would force us to define an abstract
`RevisionSet` trait, and implement it both for plain `HashSet` and for
a struct enclosing a Python set with the GIL marker `Python<'p>`, also a non
trivial effort.
The main (and seemingly only) caller of this method being
`mercurial.setdiscovery`, which is currently undergoing serious refactoring,
it's not clear whether these improvements would be worth the effort right now,
so we're leaving it as-is.
Also, in `get_bases()` (will also be used by `setdiscovery`), we'd prefer
to build a Python set directly, but we resort to returning a tuple, waiting
to hear back from our PR onto rust-cpython about that
Differential Revision: https://phab.mercurial-scm.org/D5550
rust-cpython: generalised conversion function
Because `hg::ancestors::MissingAncestors` has methods taking
some `HashSet<Revision>` besides `impl IntoIterator<Item = Revision>`
as parameters we'll need the more generic `rev_pyiter_collect()` function
to also build these
Differential Revision: https://phab.mercurial-scm.org/D5549