Sun, 26 Apr 2015 18:13:48 +0900 revset: reduce nesting of chained 'or' operations (issue4624)
Yuya Nishihara <yuya@tcha.org> [Sun, 26 Apr 2015 18:13:48 +0900] rev 25309
revset: reduce nesting of chained 'or' operations (issue4624) This reduces the stack depth of chained 'or' operations: - from O(n) to O(1) at the parsing, alias expansion and optimization phases - from O(n) to O(log(n)) at the evaluation phase simplifyinfixops() must be applied immediately after the parsing phase. Otherwise, alias expansion would crash by "maximum recursion depth exceeded" error. Test cases use 'x:y|y:z' instead of 'x|y' because I'm planning to optimize 'x|y' in a different way. Benchmarks: 0) 605b1d32c1c0 1) this patch revset #0: 0 + 1 + 2 + ... + 200 0) wall 0.026347 comb 0.030000 user 0.030000 sys 0.000000 (best of 101) 1) wall 0.023858 comb 0.030000 user 0.030000 sys 0.000000 (best of 112) revset #1: 0 + 1 + 2 + ... + 1000 0) maximum recursion depth exceeded 1) wall 0.483341 comb 0.480000 user 0.480000 sys 0.000000 (best of 20) revset #2: sort(0 + 1 + 2 + ... + 200) 0) wall 0.013404 comb 0.010000 user 0.010000 sys 0.000000 (best of 196) 1) wall 0.006814 comb 0.010000 user 0.010000 sys 0.000000 (best of 375) revset #3: sort(0 + 1 + 2 + ... + 1000) 0) maximum recursion depth exceeded 1) wall 0.035240 comb 0.040000 user 0.040000 sys 0.000000 (best of 100)
Sun, 24 May 2015 14:10:52 +0900 revset: add helper to build balanced addsets from chained 'or' operations
Yuya Nishihara <yuya@tcha.org> [Sun, 24 May 2015 14:10:52 +0900] rev 25308
revset: add helper to build balanced addsets from chained 'or' operations This function will be used by revset.orset() and scmutil.revrange() to reduce the stack depth from O(n) to O(log(n)). We've bikeshed the interface of this function, but we couldn't come to an agreement. So we decided to attempt to make it move forward. marmoute: - new factory function isn't necessary for balanced addsets - addset.__init__ can just recurse, should handle "len(subsets) == 2+" yuja: - want to write all "len(subsets) == 0, 1, 2, 3+" cases in the same function - no recursion in __init__ for cosmetic reason: can't return, can't call __init__ directly I've changed it to a private function so that nobody would be tempted to utilize it.
Sun, 26 Apr 2015 18:27:32 +0900 revset: comment that we can't swap 'or' operands by weight
Yuya Nishihara <yuya@tcha.org> [Sun, 26 Apr 2015 18:27:32 +0900] rev 25307
revset: comment that we can't swap 'or' operands by weight Though the original code did nothing, it tried to optimize the calculation order by weight. But we can't simply swap 'ta' and 'tb' because it would change the order of revisions. For future reference, this patch keeps the modified version of the original code as comment.
Sun, 26 Apr 2015 18:05:23 +0900 parser: add helper to reduce nesting of chained infix operations
Yuya Nishihara <yuya@tcha.org> [Sun, 26 Apr 2015 18:05:23 +0900] rev 25306
parser: add helper to reduce nesting of chained infix operations This will be used to avoid stack overflow caused by chained 'or' operations in revset.
Wed, 27 May 2015 14:28:29 -0500 convert: properly pass null ids through .hgtags (issue4678) stable
Matt Mackall <mpm@selenic.com> [Wed, 27 May 2015 14:28:29 -0500] rev 25305
convert: properly pass null ids through .hgtags (issue4678) Mercurial uses tags of null to mark deletions, but convert was silently discarding these because it had no mapping for them. Thus, it was resurrecting deleted tags.
Wed, 27 May 2015 17:28:55 -0500 commit: improve --close-branch documentation
Matt Mackall <mpm@selenic.com> [Wed, 27 May 2015 17:28:55 -0500] rev 25304
commit: improve --close-branch documentation The confusion about whether this flag closes a whole branch or just a head comes up regularly on IRC, so add some clarification.
Fri, 22 May 2015 13:06:45 -0700 patch: add 'extra' argument to makememctx
Laurent Charignon <lcharignon@fb.com> [Fri, 22 May 2015 13:06:45 -0700] rev 25303
patch: add 'extra' argument to makememctx The uncommit command in evolve needs to create memory context with given extra parameters. This patch allows us to do that instead of always giving them an empty value and having to override it afterwards.
Wed, 27 May 2015 17:41:42 -0500 merge with stable
Matt Mackall <mpm@selenic.com> [Wed, 27 May 2015 17:41:42 -0500] rev 25302
merge with stable
Wed, 27 May 2015 13:28:16 -0400 match: normpath the ignore source when expanding the 'subinclude' kind
Matt Harbison <matt_harbison@yahoo.com> [Wed, 27 May 2015 13:28:16 -0400] rev 25301
match: normpath the ignore source when expanding the 'subinclude' kind Windows was previously getting this test failure: --- e:/Projects/hg/tests/test-hgignore.t +++ e:/Projects/hg/tests/test-hgignore.t.err @@ -230,6 +230,7 @@ $ hg status ? dir1/file2 + ? dir1/subdir/subfile3 ? dir1/subdir/subfile4 ? dir2/file1 @@ -241,4 +242,4 @@ $ echo "glob:file*2" > dir1/.hgignoretwo $ hg status | grep file2 - [1] + ? dir1/file2 The problem was 'source' would be in the form "F:\test-hgignore.t\.hgignore", so when pathutil.dirname() split on '/', 'sourceroot' was empty. Therefore, 'path' ended up being relative instead of absolute.
Sat, 23 May 2015 21:18:47 -0700 repair: forbid strip from inside a transaction
Pierre-Yves David <pierre-yves.david@fb.com> [Sat, 23 May 2015 21:18:47 -0700] rev 25300
repair: forbid strip from inside a transaction Stripping inside a transaction will (at best) crash or (at worst) result in very unexpected results. We explicitly forbid it early.
Wed, 27 May 2015 12:14:10 -0400 test-treemanifest: add globs for Windows
Matt Harbison <matt_harbison@yahoo.com> [Wed, 27 May 2015 12:14:10 -0400] rev 25299
test-treemanifest: add globs for Windows
Wed, 27 May 2015 12:11:13 -0400 test-revert-interactive: don't escape the $ for $TESTTMP
Matt Harbison <matt_harbison@yahoo.com> [Wed, 27 May 2015 12:11:13 -0400] rev 25298
test-revert-interactive: don't escape the $ for $TESTTMP Otherwise, sh tries to exec the literal path '${TESTTMP}/editor.sh' on Windows. The test runs clean on OS X both with and without this change.
Tue, 26 May 2015 12:09:04 -0700 changelog: fix bug in heads computation
Laurent Charignon <lcharignon@fb.com> [Tue, 26 May 2015 12:09:04 -0700] rev 25297
changelog: fix bug in heads computation This patch refactors the native computation of heads. It fixes a bug where filtered heads in the pending index could be returned by the native code despite their filtering.
Tue, 26 May 2015 12:08:50 -0700 changelog: change input type of index_get_parents
Laurent Charignon <lcharignon@fb.com> [Tue, 26 May 2015 12:08:50 -0700] rev 25296
changelog: change input type of index_get_parents We were wrongfully using int instead of Py_ssize_t for the revision number.
Fri, 22 May 2015 17:08:59 -0500 branch: don't warn about branches if repository has multiple branches already
Matt Mackall <mpm@selenic.com> [Fri, 22 May 2015 17:08:59 -0500] rev 25295
branch: don't warn about branches if repository has multiple branches already This warning exists to prevent git users from prematurely polluting their namespace when trying out Mercurial. But for repos that already have multiple branches, understanding what branches are is not optional so we should just shut up.
Tue, 26 May 2015 13:02:28 -0700 transaction: really fix _addbackupentry key usage (issue4684) stable
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 26 May 2015 13:02:28 -0700] rev 25294
transaction: really fix _addbackupentry key usage (issue4684) The fix in fd905b2bea59 is actually wrong. We now use the filename to match what '_addentry'. This whole untested code is quite suspicious. This seems to point that no one is ever running 'tr.find' for a backup file.
Tue, 19 May 2015 13:08:21 -0700 largefiles: avoid match.files() in conditions
Martin von Zweigbergk <martinvonz@google.com> [Tue, 19 May 2015 13:08:21 -0700] rev 25293
largefiles: avoid match.files() in conditions See 9789b4a7c595 (match: introduce boolean prefix() method, 2014-10-28) for reasons to avoid match.files() in conditions.
Tue, 26 May 2015 11:06:43 -0700 largefiles: pass in whole matcher to getstandinmatcher()
Martin von Zweigbergk <martinvonz@google.com> [Tue, 26 May 2015 11:06:43 -0700] rev 25292
largefiles: pass in whole matcher to getstandinmatcher() The choice between the "always" case and the other case is done in getstandinmatcher() and the next patch will change how it's determined based on the matcher, so let's prepare by passing in the matcher, not just the matcher's files.
Tue, 26 May 2015 09:46:48 -0700 largefiles: drop unused 'pats' parameter from getstandinmatcher()
Martin von Zweigbergk <martinvonz@google.com> [Tue, 26 May 2015 09:46:48 -0700] rev 25291
largefiles: drop unused 'pats' parameter from getstandinmatcher() The parameter wasn't used even when it was imported from elsewhere in cfccd3bee7b3 (hgext: add largefiles extension, 2011-09-24).
Tue, 26 May 2015 14:14:36 -0700 devel: rename 'all' to 'all-warnings' (BC)
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 26 May 2015 14:14:36 -0700] rev 25290
devel: rename 'all' to 'all-warnings' (BC) We have started to isolate extra usecases for developer-only output that is not a warning. As the section has the fairly generic name 'devel' it makes sense to tuck them there. As a result, 'all' becomes a bit misleading so we rename it to 'all-warnings'. This will break some developer setups but the tests are still fine and developers will likely spot this change.
Tue, 26 May 2015 14:52:47 -0500 merge with stable
Matt Mackall <mpm@selenic.com> [Tue, 26 May 2015 14:52:47 -0500] rev 25289
merge with stable
Fri, 22 May 2015 14:02:04 -0700 copies: document hack for adding '' to set of dirs
Martin von Zweigbergk <martinvonz@google.com> [Fri, 22 May 2015 14:02:04 -0700] rev 25288
copies: document hack for adding '' to set of dirs The root directory is not normally added to 'dirs' instances (although I think it should be). In copies.mergecopies, we call dirname() to get the directory of a path and then check for containment in the 'dirs' instances ('d1' and 'd2'). In order to easily handle files in the root directory, '/' is added to d1/d2. This results in the empty string being added to the sets, since what comes before the slash in '/' is an empty string. This seems less than obvious, so let's document it.
Tue, 26 May 2015 23:14:50 +0900 test-revset: update test that isn't broken on default branch
Yuya Nishihara <yuya@tcha.org> [Tue, 26 May 2015 23:14:50 +0900] rev 25287
test-revset: update test that isn't broken on default branch "X or wdir()" just works because the default branch includes 40a2cf1c765b.
Tue, 26 May 2015 14:41:00 -0400 pathutil: demote two local functions to just be forwards
Augie Fackler <augie@google.com> [Tue, 26 May 2015 14:41:00 -0400] rev 25286
pathutil: demote two local functions to just be forwards We retain the forwards because it helps code be more ignorant of implementation details, but use forwards instead of our own method definitions since we don't need any truly custom behavior for now.
Tue, 26 May 2015 14:30:48 -0400 pathutil: restate dirname and join as forwards to posixpath
Augie Fackler <augie@google.com> [Tue, 26 May 2015 14:30:48 -0400] rev 25285
pathutil: restate dirname and join as forwards to posixpath I've done this as its own step so that it's easy to see that the posixpath implementations pass the doctests in this package. In a future patch I'll just make these pure forwards of the methods so that things using pathutil can be oblivious to the posix nature of these functions.
Wed, 20 May 2015 14:54:09 -0700 help: add documentation on include: and subinclude:
Durham Goode <durham@fb.com> [Wed, 20 May 2015 14:54:09 -0700] rev 25284
help: add documentation on include: and subinclude: Adds some help text about the new include: and subinclude: match syntax.
Sat, 16 May 2015 16:25:05 -0700 match: enable 'subinclude:' syntax
Durham Goode <durham@fb.com> [Sat, 16 May 2015 16:25:05 -0700] rev 25283
match: enable 'subinclude:' syntax This adds a new rule syntax that allows the user to include a pattern file, but only have those patterns match against files underneath the subdirectory of the pattern file. This is useful when you have nested projects in a repository and the inner projects wants to set up ignore rules that won't affect other projects in the repository. It is also useful in high commit rate repositories for removing the root .hgignore as a point of contention.
Fri, 22 May 2015 12:58:27 -0700 copies: switch to using pathutil.dirname
Durham Goode <durham@fb.com> [Fri, 22 May 2015 12:58:27 -0700] rev 25282
copies: switch to using pathutil.dirname copies had it's own dirname implementation. Now that pathutils has a common one, let's use that instead.
Fri, 22 May 2015 12:47:18 -0700 pathutil: add dirname and join functions
Durham Goode <durham@fb.com> [Fri, 22 May 2015 12:47:18 -0700] rev 25281
pathutil: add dirname and join functions This adds dirname and join functions to pathutil which are explicitly for handling '/' delimited paths. The implementations are basically copy paste from python's posix os.path.dirname and os.path.join functions.
Thu, 21 May 2015 15:44:38 -0700 changelog: move index_get_parents function up
Laurent Charignon <lcharignon@fb.com> [Thu, 21 May 2015 15:44:38 -0700] rev 25280
changelog: move index_get_parents function up index_get_parents can be used in index_headrevs, to do so it needs to be moved up in the compilation unit.
Tue, 26 May 2015 06:45:18 -0500 mergecopies: avoid slowdown from linkrev adjustment (issue4680) stable
Matt Mackall <mpm@selenic.com> [Tue, 26 May 2015 06:45:18 -0500] rev 25279
mergecopies: avoid slowdown from linkrev adjustment (issue4680) checkcopies was using fctx.rev() which it was expecting would be equivalent to linkrev() but was triggering the new _adjustlinkrev path. This was making grafts and merges with large sets of potential copies very expensive.
Tue, 26 May 2015 22:58:30 +0800 hgweb: remove an extra call to nodebranchnodefault() in changesetentry()
Anton Shestakov <engored@ya.ru> [Tue, 26 May 2015 22:58:30 +0800] rev 25278
hgweb: remove an extra call to nodebranchnodefault() in changesetentry() showbranch variable already contains the result of nodebranchnodefault(ctx), so it can be reused.
Fri, 22 May 2015 12:14:23 -0500 profile: disable nested report in lsprof by default
Matt Mackall <mpm@selenic.com> [Fri, 22 May 2015 12:14:23 -0500] rev 25277
profile: disable nested report in lsprof by default The nesting makes profiles harder to read and often pushes important data off the end of the report.
Tue, 19 May 2015 11:16:20 -0700 manifest: use match.prefix() instead of 'not match.anypats()'
Martin von Zweigbergk <martinvonz@google.com> [Tue, 19 May 2015 11:16:20 -0700] rev 25276
manifest: use match.prefix() instead of 'not match.anypats()' It seems clearer to check for what it is than what it isn't.
Tue, 19 May 2015 10:40:40 -0700 dirstate: use match.prefix() instead of 'not match.anypats()'
Martin von Zweigbergk <martinvonz@google.com> [Tue, 19 May 2015 10:40:40 -0700] rev 25275
dirstate: use match.prefix() instead of 'not match.anypats()' It seems clearer to check for what it is than what it isn't.
Tue, 19 May 2015 11:36:05 -0700 commit: avoid match.files() in conditions
Martin von Zweigbergk <martinvonz@google.com> [Tue, 19 May 2015 11:36:05 -0700] rev 25274
commit: avoid match.files() in conditions See 9789b4a7c595 (match: introduce boolean prefix() method, 2014-10-28) for reasons to avoid match.files() in conditions.
Tue, 19 May 2015 11:35:43 -0700 _makelogrevset: avoid match.files() in conditions
Martin von Zweigbergk <martinvonz@google.com> [Tue, 19 May 2015 11:35:43 -0700] rev 25273
_makelogrevset: avoid match.files() in conditions See 9789b4a7c595 (match: introduce boolean prefix() method, 2014-10-28) for reasons to avoid match.files() in conditions.
Tue, 19 May 2015 11:34:50 -0700 walkchangerevs: avoid match.files() in conditions
Martin von Zweigbergk <martinvonz@google.com> [Tue, 19 May 2015 11:34:50 -0700] rev 25272
walkchangerevs: avoid match.files() in conditions See 9789b4a7c595 (match: introduce boolean prefix() method, 2014-10-28) for reasons to avoid match.files() in conditions.
Thu, 21 May 2015 14:20:24 -0700 walkchangerevs: simplify with an 'elif'
Martin von Zweigbergk <martinvonz@google.com> [Thu, 21 May 2015 14:20:24 -0700] rev 25271
walkchangerevs: simplify with an 'elif' Since 'match.files()' is interchangeable with 'not match.files()', we can simplify with an 'elif' follwoing the 'if match.always()'.
Tue, 26 May 2015 07:44:37 -0500 merge with stable
Matt Mackall <mpm@selenic.com> [Tue, 26 May 2015 07:44:37 -0500] rev 25270
merge with stable
Mon, 25 May 2015 11:06:49 -0700 test-module-imports: drop check for Python >= 2.6
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 25 May 2015 11:06:49 -0700] rev 25269
test-module-imports: drop check for Python >= 2.6 Support for Python 2.4 and 2.5 has been dropped. This check is no longer necessary.
Mon, 25 May 2015 01:26:23 +0900 localrepo: pass hook argument txnid to pretxnopen hooks stable
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 25 May 2015 01:26:23 +0900] rev 25268
localrepo: pass hook argument txnid to pretxnopen hooks Before this patch, hook argument `txnid` isn't passed to `pretxnopen` hooks, even though `hooks` section of `hg help config` describes so. ``pretxnopen`` Run before any new repository transaction is open. The reason for the transaction will be in ``$HG_TXNNAME`` and a unique identifier for the transaction will be in ``HG_TXNID``. A non-zero status will prevent the transaction from being opened.
Mon, 25 May 2015 01:26:19 +0900 transaction: separate calculating TXNID from creating transaction object stable
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 25 May 2015 01:26:19 +0900] rev 25267
transaction: separate calculating TXNID from creating transaction object Before this patch, transaction ID (TXNID) is calculated from `transaction` object itself by `id()`, but this prevents TXNID from being passed to `pretxnopen` hooks, which should be executed before starting transaction processing (also any preparations for it, like writing journal files out). As a preparation for passing TXNID to `pretxnopen` hooks, this patch separates calculation of TXNID from creation of `transaction` object. This patch uses "random" library for reasonable unique ID. "uuid" library can't be used, because it was introduced since Python 2.5 and isn't suitable for Mercurial 3.4.x stable line. `%f` formatting for `random.random()` is used with explicit precision number 40, because default precision for `%f` is 6. 40 should be long enough, even if 10**9 transactions are executed in a short time (a second or less). On the other hand, `time.time()` is used to ensures uniqueness of TXNID in a long time, for safety. BTW, platform not providing `/dev/urandom` or so may cause failure of `import random` itself with some Python versions (see Python issue15340 for detail http://bugs.python.org/issue15340). But this patch uses "random" without any workaround, because: - "random" is already used directly in some code paths, - such platforms are very rare (e.g. Tru64 and HPUX), and http://bugs.python.org/issue15340#msg170000 - updating Python runtime can avoid this issue
Sat, 23 May 2015 11:14:00 +0900 revbranchcache: return uncached branchinfo for nullrev (issue4683) stable
Yuya Nishihara <yuya@tcha.org> [Sat, 23 May 2015 11:14:00 +0900] rev 25266
revbranchcache: return uncached branchinfo for nullrev (issue4683) This fixes the crash caused by "branch(null)" revset. No cache should be necessary for nullrev because changelog.branchinfo(nullrev) does not involve IO operation. Note that the problem of "branch(wdir())" isn't addressed by this patch. "wdir()" will raise TypeError in many places because of None. This is the reason why "wdir()" is still experimental.
Sun, 24 May 2015 10:29:33 +0900 revset: drop magic of fullreposet membership test (issue4682) stable
Yuya Nishihara <yuya@tcha.org> [Sun, 24 May 2015 10:29:33 +0900] rev 25265
revset: drop magic of fullreposet membership test (issue4682) This patch partially backs out d2de20e1451f and adds an alternative workaround to functions that evaluate "null" and "wdir()". Because the new workaround is incomplete, "first(null)" and "min(null)" don't work as expected. But they were not usable until 3.4 and "null" isn't commonly used, we can postpone a complete fix for 3.5. The issue4682 was caused because "branch(default)" is evaluated to "<filteredset <fullreposet>>", keeping fullreposet magic. The next patch will fix crash on "branch(null)", but without this patch, it would make "null in <branch(default)>" be True, which means "children(branch(default))" would return all revisions but merge (p2 != null). I believe the right fix is to stop propagating fullreposet magic on filter(), but it wouldn't fit to stable release. Also, we should discuss how to handle "null" and "wdir()" in revset before.
Sat, 23 May 2015 15:55:04 -0500 merge with stable
Matt Mackall <mpm@selenic.com> [Sat, 23 May 2015 15:55:04 -0500] rev 25264
merge with stable
Fri, 22 May 2015 12:13:18 -0500 transaction: use the proper variable in '_addbackupentry' (issue4684) stable
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 22 May 2015 12:13:18 -0500] rev 25263
transaction: use the proper variable in '_addbackupentry' (issue4684) The 'file' variable was undefined but resolved to the 'file' built-in. This is why pylint complains about overwriting built-ins...
Fri, 22 May 2015 21:19:08 -0400 run-tests: python3.5 now supports mkdtemp using bytes for paths
Augie Fackler <raf@durin42.com> [Fri, 22 May 2015 21:19:08 -0400] rev 25262
run-tests: python3.5 now supports mkdtemp using bytes for paths Now that http://bugs.python.org/issue24230 is fixed (thanks to Gregory Smith for that quick response!) we can drop one more ugly hack around path handling. Tests still pass in 3.5 with this cleaner version, as well as in 2.6.
Fri, 22 May 2015 21:15:52 -0400 run-tests: use items() instead of iteritems()
Augie Fackler <raf@durin42.com> [Fri, 22 May 2015 21:15:52 -0400] rev 25261
run-tests: use items() instead of iteritems() This fixes the python3.5 build. We'll presumably want to build our own helper function or use 2to3 for this on the main source tree, but for run-tests we want a single-source version that works in 2.6 and 3.5.
Thu, 21 May 2015 14:57:30 -0700 selve: make 'shelve --interactive' not experimental
Laurent Charignon <lcharignon@fb.com> [Thu, 21 May 2015 14:57:30 -0700] rev 25260
selve: make 'shelve --interactive' not experimental It is safe to do as 'shelve -i' uses the same code path as 'commit -i' that is not experimental.
Thu, 21 May 2015 14:34:24 -0700 revert: fix edition of newly added file during --interactive
Laurent Charignon <lcharignon@fb.com> [Thu, 21 May 2015 14:34:24 -0700] rev 25259
revert: fix edition of newly added file during --interactive Before this patch: editing hunks of newly added file when performing a revert --interactive had no effect: the edits were discarded. After this patch, the edits are taken into account.
Thu, 21 May 2015 14:25:57 -0700 revert: make revert --interactive use git style diff
Laurent Charignon <lcharignon@fb.com> [Thu, 21 May 2015 14:25:57 -0700] rev 25258
revert: make revert --interactive use git style diff This allows us to use existing code to detect files that are newly added and modified. In turn, this allows us to make revert --interactive support editing newly added and modified files.
Thu, 21 May 2015 14:32:14 -0700 record: extract code to compute newly added and modified files
Laurent Charignon <lcharignon@fb.com> [Thu, 21 May 2015 14:32:14 -0700] rev 25257
record: extract code to compute newly added and modified files We want to reuse this logic in revert.
Thu, 21 May 2015 14:28:02 -0700 record: extract ishunk to a function
Laurent Charignon <lcharignon@fb.com> [Thu, 21 May 2015 14:28:02 -0700] rev 25256
record: extract ishunk to a function We extract this code as we want to reuse it in revert -i.
Sun, 26 Apr 2015 22:26:44 +0900 fileset: pretty print syntax tree in debug output
Yuya Nishihara <yuya@tcha.org> [Sun, 26 Apr 2015 22:26:44 +0900] rev 25255
fileset: pretty print syntax tree in debug output
Wed, 06 May 2015 10:17:41 +0900 parser: extract closure of prettyformat() to a top-level function
Yuya Nishihara <yuya@tcha.org> [Wed, 06 May 2015 10:17:41 +0900] rev 25254
parser: extract closure of prettyformat() to a top-level function There was no capture until I added 'leafnodes' argument.
Sun, 26 Apr 2015 22:20:03 +0900 parser: move prettyformat() function from revset module
Yuya Nishihara <yuya@tcha.org> [Sun, 26 Apr 2015 22:20:03 +0900] rev 25253
parser: move prettyformat() function from revset module I want to use it in doctests that I'll add by future patches. Also, it can be used in "hg debugfileset" command.
Sun, 26 Apr 2015 19:50:42 +0900 fileset: move validation of incomplete parsing to parse() function
Yuya Nishihara <yuya@tcha.org> [Sun, 26 Apr 2015 19:50:42 +0900] rev 25252
fileset: move validation of incomplete parsing to parse() function fileset.parse() should be responsible for all parsing errors as well.
Sun, 26 Apr 2015 19:42:47 +0900 revset: move validation of incomplete parsing to parse() function
Yuya Nishihara <yuya@tcha.org> [Sun, 26 Apr 2015 19:42:47 +0900] rev 25251
revset: move validation of incomplete parsing to parse() function revset.parse() should be responsible for all parsing errors. Perhaps it wasn't because 'revset.parse' was not a real function when the validation code was added at ffcb7e4d719f.
Fri, 22 May 2015 14:39:34 -0700 match: fix bug in match.visitdir()
Drew Gottlieb <drgott@google.com> [Fri, 22 May 2015 14:39:34 -0700] rev 25250
match: fix bug in match.visitdir() There was a bug in my recent change to visitdir (8545bd381504) due to the stored generator being iterated over twice. Making the generator into a list at the start fixes this.
(0) -10000 -3000 -1000 -300 -100 -60 +60 +100 +300 +1000 +3000 +10000 tip