streamclone: move wire protocol status code from wireproto command
This consolidates the code for the streaming clone wire protocol format
into streamclone.py. It also eliminates a generator wrapper, which might
make streaming clones slightly faster.
Differential Revision: https://phab.mercurial-scm.org/D1754
histedit: add ui.log for action count
Differential Revision: https://phab.mercurial-scm.org/D1751
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.