Tue, 16 Jan 2018 23:50:01 +0900 templater: fix crash by empty group expression
Yuya Nishihara <yuya@tcha.org> [Tue, 16 Jan 2018 23:50:01 +0900] rev 35744
templater: fix crash by empty group expression 'exp' may be None because of '(group None)' node. The error message is copied from revset.py.
Tue, 16 Jan 2018 21:46:17 +0900 log: fix typo in comment about _matchfiles()
Yuya Nishihara <yuya@tcha.org> [Tue, 16 Jan 2018 21:46:17 +0900] rev 35743
log: fix typo in comment about _matchfiles()
Thu, 18 Jan 2018 13:33:21 -0800 sparse: --include 'dir1/dir2' should not include 'dir1/*'
Hollis Blanchard <hollis_blanchard@mentor.com> [Thu, 18 Jan 2018 13:33:21 -0800] rev 35742
sparse: --include 'dir1/dir2' should not include 'dir1/*' In 2015 there was a workaround added (f39bace2d6cad32907c0d7961b3c0dbd64a1b7ad) to sparse in the hg-experimental repo. That workaround: a) no longer seems to be needed, since its testcase passes even with the code removed, and b) caused a new problem: --include 'dir1/dir2' ended up including dir1/* too. (--include 'glob:dir1/dir2' is a user-level workaround.) Remove the offending code, and add a testcase for situation B.
Sun, 14 Jan 2018 13:29:15 +0900 fileset: add kind:pat operator
Yuya Nishihara <yuya@tcha.org> [Sun, 14 Jan 2018 13:29:15 +0900] rev 35741
fileset: add kind:pat operator ":" isn't taken as a symbol character but an infix operator so we can write e.g. "path:'foo bar'" as well as "'path:foo bar'". An invalid pattern kind is rejected in the former form as we know a kind is specified explicitly. The binding strength is copied from "x:y" range operator of revset. Perhaps it can be adjusted later if we want to parse "foo:bar()" as "(foo:bar)()", not "foo:(bar())". We can also add "kind:" postfix operator if we want. One possible confusion is that the scope of the leading "set:" vs "kind:pat" operator. The former is consumed by a matcher so applies to the whole fileset expression: $ hg files 'set:foo() or kind:bar or baz' ^^^^^^^^^^^^^^^^^^^^^^^^ Whereas the scope of kind:pat operator is narrow: $ hg files 'set:foo() or kind:bar or baz' ^^^
Sun, 14 Jan 2018 13:33:56 +0900 minifileset: unify handling of symbol and string patterns
Yuya Nishihara <yuya@tcha.org> [Sun, 14 Jan 2018 13:33:56 +0900] rev 35740
minifileset: unify handling of symbol and string patterns They must be identical for fileset compatibility.
Sun, 14 Jan 2018 13:28:20 +0900 fileset: move import of match module to top
Yuya Nishihara <yuya@tcha.org> [Sun, 14 Jan 2018 13:28:20 +0900] rev 35739
fileset: move import of match module to top Actually there was no circular import issue.
Sun, 14 Jan 2018 21:28:12 +0100 revlog: group delta computation methods under _deltacomputer object
Paul Morelle <paul.morelle@octobus.net> [Sun, 14 Jan 2018 21:28:12 +0100] rev 35738
revlog: group delta computation methods under _deltacomputer object Extracting these methods from revlog will allow changing the implementation of the deltacomputer, by providing this interface: __init__(self, revlog) - constructor that initialize the object from a given revlog buildtext(self, revinfo, fh) - builds the fulltext version of a revision from a _revisioninfo object and the file handle to the .d (or .i for inline mode) file. finddeltainfo(self, revinfo, fh) - find a revision in the revlog against which it is acceptable to build a delta, and build the corresponding _deltainfo. It should now be easier to write an experimental feature that would replace _deltacomputer by another object, for example one that would know how to parallelize the delta computation in order to quicken the storage of multiple revisions.
Sun, 14 Jan 2018 14:36:22 +0100 revlog: refactor out _finddeltainfo from _addrevision
Paul Morelle <paul.morelle@octobus.net> [Sun, 14 Jan 2018 14:36:22 +0100] rev 35737
revlog: refactor out _finddeltainfo from _addrevision Splicing the code into smaller chunks should help understanding it, and eventually override some parts in experimental branches to try optimization.
Fri, 19 Jan 2018 21:39:11 +0900 localrepo: micro-optimize __len__() to bypass repoview
Yuya Nishihara <yuya@tcha.org> [Fri, 19 Jan 2018 21:39:11 +0900] rev 35736
localrepo: micro-optimize __len__() to bypass repoview Since len(changelog) isn't overridden, we don't have to validate a cache of unfiltered changelog. $ python -m timeit -n 10000 \ -s 'from mercurial import hg, ui; repo = hg.repository(ui.ui());' \ 'len(repo)' orig) 10000 loops, best of 3: 32.1 usec per loop new) 10000 loops, best of 3: 1.79 usec per loop Spotted by Jordi GutiƩrrez Hermoso.
Thu, 18 Jan 2018 21:18:10 -0500 lfs: defer registering the pre-push hook until blobs are committed
Matt Harbison <matt_harbison@yahoo.com> [Thu, 18 Jan 2018 21:18:10 -0500] rev 35735
lfs: defer registering the pre-push hook until blobs are committed The hook searches outgoing commits for blobs, and uploads them before letting the push occur. No reason to search for that which isn't there.
(0) -30000 -10000 -3000 -1000 -300 -100 -10 +10 +100 +300 +1000 +3000 +10000 tip