hgweb: extract code for emitting multiple changelist records
changelistentry() exists so extensions can easily monkeypatch the
function to add additional metadata.
In at least one case at Mozilla, we have an extension doing this
where performance would greatly benefit if we were able to "batch
fetch" metadata for all revisions that will eventually have their
data set.
By extracting the logic for "obtain records for N revisions" into
a standalone function, we make it possible for a monkeypatched
function to more efficiently bulk fetch data for N revisions.
Differential Revision: https://phab.mercurial-scm.org/D3573
phabricator: register config settings
I didn't bother registering the deprecated phabricator.auth.*, and I'm not sure
if the two flagged as 'developer config' should be moved to [devel] (or why
there's a distinction between `repophid` and `callsign`).
filemerge: support specifying a python function to custom merge-tools
Eliminates the need to specify a python executable, which may not exist on
system. Additionally launching script inprocess aids portability on systems
that can't execute python via the shell.
Example usage "merge-tools.myTool.executable=python:c:\myTool.py:mergefn"
where myTool.py contains a function:
"def mergefn(ui, repo, args, **kwargs):"
where args is list of args passed to merge tool.
(by default, expanded: $local $base $other)
Invoking the specified python function was done by exposing and invoking
(hook._pythonhook -> hook.pythonhook)
help: correct signature of separate() template function
Without the dots, it looked as if separate() would take a list of arguments.
hgweb: do not try to replace signal handlers while locking
According to the issue 5889, mod_wsgi issues a warning on signal.signal()
call, and we wouldn't want to see it in error log. The problem addressed
by
d77c3b023393 could potentially occur in web session, but that would be
less likely than in user processes.
lock: add internal config to not replace signal handlers while locking
signal.signal() is blocked in some WSGI environments, and a horrible warning
is sent to the server log. So we need a way to disable it, and I think
abusing ui.config is the simplest workaround.