With the pager as the child process instead of the parent process, the
termination of the parent Mercurial process can cause the terminal to return
before the pager exits. Inverting the relationship prevents that issue.
Platforms without fork() will continue to use util.popen().
Provide extendable keyword.recordextensions variable, so other
extensions beside hgext.record which provide the dorecord function
can cooperate with hgext.keyword like so (example from crecord):
def extsetup():
try:
keyword = extensions.find('keyword')
keyword.restricted += ' crecord qcrecord'
try:
# use record support in keyword.py if present
keyword.recordcommands += ' crecord qcrecord'
keyword.recordextensions += ' crecord'
except AttributeError:
pass
except KeyError:
pass
From RFC 5322:
an optional reply-to field MAY also be included, which contains the field
name "Reply-To" and a comma-separated list of one or more addresses.
[...]
When the "Reply-To:" field is present, it indicates the address(es) to which
the author of the message suggests that replies be sent. In the absence of
the "Reply-To:" field, replies SHOULD by default be sent to the mailbox(es)
specified in the "From:" field unless otherwise specified by the person
composing the reply.
Reply-To addresses may be specified either via command line with --reply-to
or via the 'email' or 'patchbomb' sections of the config file.
When converting non-local repositories, scanning changed paths before
retrieving data can be almost as slow as retrieving the data itself, thanks to
HTTP calls overhead.
We do not care about directories when looking for recursively added or removed
items, and the redundant _checkpath() call is expensive with remote
repositories.
This recode call was removed in 597805361f86, because it looked the
encode(decode()) construct was a no-op. In fact, the first decode() call was
wrong, and entries still have to be encoded before being passed to the sink.
For some reason, if a copy source is deleted in the same revision it is
referenced, it is filtered out. This is silly, because this happens all the
time with move operations. Fortunately, the filtering code is buggy and ends
being a no-op 99% of the time, since it does not delete the right key. Just
remove all this nonsense.
1) use kwtemplater.record attribute for clarity
2) drop optional context argument; consider the speed loss by
duplicating the dictionary lookup repo['.'] as negligible