run-tests: extract sorting of tests to own function
TestRunner._run() is a large function and is difficult to follow.
Let's extract the test sorting to its own function to make it shorter.
When I refactored run-tests.py several years ago, I put a lot of
functionality in methods. The prevailing Mercurial style is to use
functions - not classes - where possible. While refactoring the code,
I decided to undo this historical mistake of mine by moving the code
to a standalone function.
Differential Revision: https://phab.mercurial-scm.org/D1750
run-tests: remove dead code related to temp directory
Differential Revision: https://phab.mercurial-scm.org/D1749
rebase: switch ui.log calls to common style
The old style raised errors in some cases.
Differential Revision: https://phab.mercurial-scm.org/D1748
hgweb: link to successors of obsoleted changesets
_siblings() prepare various useful properties to use in templates. This
function usually prepares parents and children of changesets for use in hgweb
templates, but it can be used for successors too. It's needed because
item['successors'] is a _hybrid object that works well when used in regular
templates, but in hgweb templates work slightly differently and can't get hex
nodes of the successors, which are required for these links to work.
hgweb: display fate of obsolete changesets
Operations that obsolete changesets store enough metadata to explain what
happened after the fact. One way to get that metadata is showsuccsandmarkers
function, which returns a list of successors of a particular changeset and
appropriate obsolescence markers.
Templates have a set of experimental functions that have names starting with
obsfate. This patch uses some of these functions to interpret output of
succsandmarkers() and produce human-friendly messages that describe what
happened to an obsolete changeset, e.g. "pruned" or "rewritten as
6:
3de5eca88c00".
In commonentry(), succsandmarkers property is made callable so it's only
executed on demand; this saves time when changeset is not obsolete, and also in
e.g. /shortlog view, where there are a lot of changesets, but we don't need to
show each and every one in detail.
In spartan theme, succsandmarkers is used instead of the simple "obsolete:
yes", in other themes a new line is added to /rev page.
test-ssh: stabilize for Windows
Previously, this complained:
remote: '.' is not recognized as an internal or external command,
remote: operable program or batch file.
Making this a python script apparently revealed some races[1]. Thanks to Yuya
for suggesting this.
[1] https://www.mercurial-scm.org/pipermail/mercurial-devel/2017-December/109094.html
templater: register keywords to defaults table
Since the keywords are permanent, there should be no need to pass them
by a temporary mapping.
templater: drop unneeded resources from conflict-marker data
Follow-up for
32c278eb876f and
f1c54d003327.
templater: rewrite docstring of templater.__init__()
More importantly, this patch adds what the cache is.
rebase: don't take out a dirstate guard for in-memory rebase
Since IMM doesn't affect the dirstate, it's not needed, and might be faster.
Differential Revision: https://phab.mercurial-scm.org/D1745