FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 26 Jun 2017 03:40:57 +0900] rev 33066
keyword: add test for keyword expansion at serving multiple repositories
This is safety for subsequent (and future) patches, which change
function wrapping.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 26 Jun 2017 03:40:12 +0900] rev 33065
keyword: make comparison webcommand suppress keyword expansion
Before this patch, diff in "comparison" webcommand doesn't suppress
keyword expansion as same as diff output of other webcommands.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 26 Jun 2017 03:40:06 +0900] rev 33064
keyword: restore kwtemplater.match at the end of wrapped webcommands
Before this patch, kwweb_skip doesn't restore kwtemplater.match after
wrapped webcommands. This suppresses keyword expansion at wrapped
webcommands.
Typical usecase of this issue is "file" webcommand after annotate,
changeset, filediff or so on.
To ensure kwtemplater.match=util.never while original webcommand
running, this patch makes kwweb_skip yield values returned by it,
because it returns generator object.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 26 Jun 2017 03:38:12 +0900] rev 33063
keyword: restore kwtemplater.restrict at the end of wrapped patch.diff
Before this patch, kwdiff doesn't restore kwtemplater.restrict after
invocation of wrapped patch.diff(). This suppresses keyword expansion
at subsequent filelog.read().
Typical usecase of this issue is "hg cat" after "hg diff" with command
server. In this case, kwtemplater.restrict=True is kept in command
server process even after "hg diff".
To ensure kwtemplater.restrict=True while original patch.diff()
running, this patch makes kwdiff() yield values returned by it,
because it returns generator object.
Strictly speaking, if filelog.read() is invoked before completely
evaluating the result of previous patch.diff(), keyword expansion is
still suppressed, because kwtemplater.restrict isn't restored yet.
But this fixing should be reasonable enough, because patch.diff() is
consumed immediately, AFAIK.
Yuya Nishihara <yuya@tcha.org> [Mon, 26 Jun 2017 22:27:34 +0900] rev 33062
debugrevlog: align chain length, reach, and compression ratio
I think this is what the max(...) exists for.
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 23 Jun 2017 17:19:29 +0200] rev 33061
configitems: register 'ui.interactive'
That item default value is a bit special (None) so this adds a second proof
that everything is still working fine.
Pierre-Yves David <pierre-yves.david@octobus.net> [Sun, 25 Jun 2017 14:41:12 +0200] rev 33060
config: use '_config' within 'configbytes'
This will prevent bugs from using None as the sentinel value (eg:
'ui.interactive')
Pierre-Yves David <pierre-yves.david@octobus.net> [Sun, 25 Jun 2017 14:38:56 +0200] rev 33059
config: use '_config' within 'configbool'
This will prevent bugs from using None as the sentinel value (eg:
'ui.interactive')
Pierre-Yves David <pierre-yves.david@octobus.net> [Sun, 25 Jun 2017 14:34:34 +0200] rev 33058
config: extract the core config logic into a private method
This will make it easier for the other 'configxxx' function to detect unset
value.
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 23 Jun 2017 01:38:10 +0200] rev 33057
debugrevlog: also display the largest delta chain span
Mercurial read all data between the base of the chain and the last delta when
restoring content (including unrelated delta). To monitor this, we add data
about the size of the "delta chain span" to debugrevlog.
Jun Wu <quark@fb.com> [Sat, 24 Jun 2017 21:13:48 -0700] rev 33056
rebase: clean up rebasestate from active transaction
Previously, rebase assumes the following pattern:
rebase:
with transaction as tr: # top-level
...
tr.__close__ writes rebasestate
unlink('rebasestate')
However it's possible that "rebase" was called inside a transaction:
with transaction as tr1:
rebase:
with transaction as tr2: # not top-level
...
tr2.__close__ does not write rebasestate
unlink('rebasestate')
tr1.__close__ writes rebasestate
That leaves a rebasestate on disk incorrectly.
This patch adds "removefilegenerator" to notify transaction code that the
state file is no longer needed therefore fixes the issue.
Jun Wu <quark@fb.com> [Sat, 24 Jun 2017 21:01:28 -0700] rev 33055
test-rebase: add a test showing rebasestate left behind
The test demonstrates that .hg/rebasestate is left behind if "rebase" was
called inside an existing transaction.
Matt Harbison <matt_harbison@yahoo.com> [Sun, 25 Jun 2017 17:46:35 -0400] rev 33054
identify: rename 'changed' keyword -> 'dirty'
I meant to do this before sending the initial templater support, but forgot.
I'm quite surprised that 'dirty' doesn't occur in more user facing contexts, but
there are a few, like the help for blackbox. It also more obviously mirrors the
'(clean)' state printed by the summary command. I also didn't like that it was
just one letter off from {changes} in the {latesttags} sub-keywords, which has a
totally different meaning.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sat, 24 Jun 2017 02:39:21 +0900] rev 33053
dispatch: remove unused _loaded
Now, there is no user for dispatch._loaded.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sat, 24 Jun 2017 02:39:20 +0900] rev 33052
extensions: register functions always at loading extension (issue5601)
Before this patch, functions defined in extensions are registered via
extra loaders only in _dispatch(). Therefore, loading extensions in
other code paths like below omits registration of functions.
- WSGI service
- operation across repositories (e.g. subrepo)
- test-duplicateoptions.py, using extensions.loadall() directly
To register functions always at loading new extension, this patch
moves implementation for extra loading from dispatch._dispatch() to
extensions.loadall().
AFAIK, only commands module causes cyclic dependency between
extensions module, but this patch imports all related modules just
before extra loading in loadall(), in order to centralize them.
This patch makes extensions.py depend on many other modules, even
though extensions.py itself doesn't. It should be avoided if possible,
but I don't have any better idea. Some other places like below aren't
reasonable for extra loading, IMHO.
- specific function in newly added module:
existing callers of extensions.loadall() should invoke it, too
- hg.repository() or so:
no-repo commands aren't covered by this.
BTW, this patch removes _loaded.add(name) on relocation, because
dispatch._loaded is used only for extraloaders (for similar reason,
"exts" variable is removed, too).