Thu, 31 Mar 2016 18:38:08 +0200 pypy: fix doctests for pypy optimizations
Maciej Fijalkowski <fijall@gmail.com> [Thu, 31 Mar 2016 18:38:08 +0200] rev 28717
pypy: fix doctests for pypy optimizations PyPy would sometime call __len__ at points where it things preallocating the container makes sense. Change the doctests so they're using generator expressions and not list comprehensions
Sat, 19 Mar 2016 15:31:13 +0100 largefiles: replace invocation of os.path module by vfs in reposetup.py
liscju <piotr.listkiewicz@gmail.com> [Sat, 19 Mar 2016 15:31:13 +0100] rev 28716
largefiles: replace invocation of os.path module by vfs in reposetup.py This commit is part of bigger effort described in 'Windows UTF-8' plan.
Sat, 19 Mar 2016 14:50:40 +0100 largefiles: replace invocation of os.path module by vfs in overrides.py
liscju <piotr.listkiewicz@gmail.com> [Sat, 19 Mar 2016 14:50:40 +0100] rev 28715
largefiles: replace invocation of os.path module by vfs in overrides.py This commit is part of bigger effort described in 'Windows UTF-8' plan. It is not changing all invocations but the ones where change is obviously correct and doesn't require complicated changes.
Wed, 23 Mar 2016 08:55:22 +0100 bundle: warn when update to revision existing only in a bundle (issue5004)
liscju <piotr.listkiewicz@gmail.com> [Wed, 23 Mar 2016 08:55:22 +0100] rev 28714
bundle: warn when update to revision existing only in a bundle (issue5004) Now its done silently, so unless user really knows what he is doing will be suprised to find that after update 'hg status' doesn't work. This commit makes also merge operation warns about missing parent when revision to merge exists only in the bundle.
Wed, 30 Mar 2016 21:54:26 +0200 tests: fix builtin module test on pypy
Maciej Fijalkowski <fijall@gmail.com> [Wed, 30 Mar 2016 21:54:26 +0200] rev 28713
tests: fix builtin module test on pypy On pypy datetime and cProfile are modules written in Python, not in C. For the purpose of this test, just list them explicitely as builtins, which silences warnings about them being imported before stdlib modules.
Thu, 31 Mar 2016 15:37:21 +0800 hgweb: generate last change date for an empty atom-bookmarks feed (issue5022)
Anton Shestakov <av6@dwimlabs.net> [Thu, 31 Mar 2016 15:37:21 +0800] rev 28712
hgweb: generate last change date for an empty atom-bookmarks feed (issue5022) RFC 4287 states that atom feeds must have an <updated> element, so let's add one even when repo doesn't have a single bookmark.
Thu, 31 Mar 2016 15:22:06 +0800 hgweb: sort bookmarks in revlog order of their nodes
Anton Shestakov <av6@dwimlabs.net> [Thu, 31 Mar 2016 15:22:06 +0800] rev 28711
hgweb: sort bookmarks in revlog order of their nodes Changes, branches and tags are already in revlog order on /summary, /branches and /tags, let's now make bookmarks be sorted by the same principle. It's more helpful to show more "recent" bookmarks on top. This will affect /bookmarks page in all styles, including atom, rss and raw, and also /summary page. Bookmarks are sorted using a (revision number, bookmark name) tuple.
Thu, 31 Mar 2016 14:23:27 +0800 hgweb: sort bookmarks early
Anton Shestakov <av6@dwimlabs.net> [Thu, 31 Mar 2016 14:23:27 +0800] rev 28710
hgweb: sort bookmarks early Let's do the same thing that /tags page does. It gets sorted tags and then if it needs the latest only, it just slices the first item from the list. Since it's a slice and not a min(), it doesn't throw an exception if the list is empty. This fixes HTTP 500 error from issue5022.
Thu, 31 Mar 2016 18:09:09 +0800 hgweb: add parents to json-log (issue5074)
Anton Shestakov <av6@dwimlabs.net> [Thu, 31 Mar 2016 18:09:09 +0800] rev 28709
hgweb: add parents to json-log (issue5074) Entries prepared in webutil.changelistentry() skip showing parents in the trivial case when there's only one parent and it's the previous revision. This doesn't work well for the json-log template, which is supposed to just dump raw data in an easy-to-parse format, so let's provide all parents as another keyword: allparents. Using a lambda function here means that the performance of templates that don't use allparents won't be affected (see 41957e50e109).
Mon, 29 Feb 2016 17:46:06 +0900 revset: make _parsealiasdecl() simply return the original parsed tree
Yuya Nishihara <yuya@tcha.org> [Mon, 29 Feb 2016 17:46:06 +0900] rev 28708
revset: make _parsealiasdecl() simply return the original parsed tree It wasn't necessary to reconstruct the same tuple.
Mon, 29 Feb 2016 16:35:58 +0900 revset: inline isvalidfunc(), getfuncname() and getfuncargs()
Yuya Nishihara <yuya@tcha.org> [Mon, 29 Feb 2016 16:35:58 +0900] rev 28707
revset: inline isvalidfunc(), getfuncname() and getfuncargs() See the previous commit for why. These functions are also trivial.
Mon, 29 Feb 2016 16:32:18 +0900 revset: inline isvalidsymbol() and getsymbol() into _parsealiasdecl()
Yuya Nishihara <yuya@tcha.org> [Mon, 29 Feb 2016 16:32:18 +0900] rev 28706
revset: inline isvalidsymbol() and getsymbol() into _parsealiasdecl() Since I'm going to extract a common alias parser, I want to eliminate dependencies to the revset parsing rules. These functions are trivial, so we can go without them.
Mon, 29 Feb 2016 16:23:09 +0900 revset: remove redundant checks for parsed tree of alias
Yuya Nishihara <yuya@tcha.org> [Mon, 29 Feb 2016 16:23:09 +0900] rev 28705
revset: remove redundant checks for parsed tree of alias If tree is a tuple, it must have at least one element. Also the length of node tuple is guaranteed by the syntax elements. (e.g. 'func' must have 3 items.) This change will help inlining these trivial functions in future patches.
Wed, 30 Mar 2016 08:15:37 +0000 py3: handle iter/iterkeys+iteritems python3 divergence in import-checker
timeless <timeless@mozdev.org> [Wed, 30 Mar 2016 08:15:37 +0000] rev 28704
py3: handle iter/iterkeys+iteritems python3 divergence in import-checker
Wed, 30 Mar 2016 04:55:16 +0000 py3: use print_function in import-checker
timeless <timeless@mozdev.org> [Wed, 30 Mar 2016 04:55:16 +0000] rev 28703
py3: use print_function in import-checker
Wed, 30 Mar 2016 04:50:19 +0000 py3: use absolute_import in import-checker
timeless <timeless@mozdev.org> [Wed, 30 Mar 2016 04:50:19 +0000] rev 28702
py3: use absolute_import in import-checker
Wed, 30 Mar 2016 09:13:47 +0000 run-tests: make _processoutput picky about optional globs
timeless <timeless@mozdev.org> [Wed, 30 Mar 2016 09:13:47 +0000] rev 28701
run-tests: make _processoutput picky about optional globs 1ad0ddf8cccc enabled lines that were not matched to be found later in cases of jitter. Unfortunately, in this model an optional line would always jitter to the end when it is not present. That is not ideal. It would be possible to do better, by queuing all writes until the end in case an optional line jitters, but for now, it is simpler to assume optional lines have a fixed place in the stream.
Wed, 30 Mar 2016 07:24:51 +0000 py24: remove check-code py24 notation
timeless <timeless@mozdev.org> [Wed, 30 Mar 2016 07:24:51 +0000] rev 28700
py24: remove check-code py24 notation We require python2.6+
Wed, 30 Mar 2016 08:02:34 +0000 py3: convert hghave output to text
timeless <timeless@mozdev.org> [Wed, 30 Mar 2016 08:02:34 +0000] rev 28699
py3: convert hghave output to text Before this, Python3 generated: b'skipped: unknown feature: not-py3k\n'
Wed, 30 Mar 2016 05:26:51 +0000 py3: convert prereq bytes to string in run-tests
timeless <timeless@mozdev.org> [Wed, 30 Mar 2016 05:26:51 +0000] rev 28698
py3: convert prereq bytes to string in run-tests Without this, run-tests would generate: WARNING: Did not find prerequisite tool: b'python3.5'
Mon, 28 Mar 2016 12:50:56 -0700 record: deprecate the extension
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 28 Mar 2016 12:50:56 -0700] rev 28697
record: deprecate the extension The feature has been moved into core behind the -i flag. We can safely deprecated the extension and point people at the --interactive flag in core.
Wed, 30 Mar 2016 02:10:44 +0900 templater: use templatefunc to mark a function as template function
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Wed, 30 Mar 2016 02:10:44 +0900] rev 28696
templater: use templatefunc to mark a function as template function Using decorator can localize changes for adding (or removing) a template function in source code. This patch also removes leading ":FUNC(ARG...):" part in help document of each function, because using templatefunc makes it useless. This patch uses not 'func' but 'templatefunc' as a decorator name, because the former is too generic one, even though the latter is a little redundant in 'templater.py'.
Wed, 30 Mar 2016 02:10:44 +0900 registrar: add templatefunc to mark a function as template function (API)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Wed, 30 Mar 2016 02:10:44 +0900] rev 28695
registrar: add templatefunc to mark a function as template function (API) This patch also adds loadfunction() to templater, because this combination helps to figure out how they cooperate with each other. Listing up loadfunction() in dispatch.extraloaders causes implicit loading template function at loading (3rd party) extension. This patch explicitly tests whether templatefunc decorator works as expected, because there is no bundled extension, which defines template function. This change requires that "templatefunc" attribute of (3rd party) extension is registrar.templatefunc or so.
Wed, 30 Mar 2016 02:10:44 +0900 keyword: use templatefilter to mark a function as template filter
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Wed, 30 Mar 2016 02:10:44 +0900] rev 28694
keyword: use templatefilter to mark a function as template filter This patch also adds test for filter 'svnisodate' and 'svnutcdate' for safety, because there is no test using them, yet.
Wed, 30 Mar 2016 02:10:44 +0900 templatefilters: use templatefilter to mark a function as template filter
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Wed, 30 Mar 2016 02:10:44 +0900] rev 28693
templatefilters: use templatefilter to mark a function as template filter Using decorator can localize changes for adding (or removing) a template filter function in source code. This patch also removes leading ":FILTER:" part in help document of each filters, because using templatefilter makes it useless. This patch uses not 'filter' but 'templatefilter' as a decorator name, because the former name hides Python built-in one, even though the latter is a little redundant in 'templatefilters.py'.
Wed, 30 Mar 2016 02:10:44 +0900 registrar: add templatefilter to mark a function as template filter (API)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Wed, 30 Mar 2016 02:10:44 +0900] rev 28692
registrar: add templatefilter to mark a function as template filter (API) This patch also adds loadfilter() to templatefilters, because this combination helps to figure out how they cooperate with each other. Listing up loadfilter() in dispatch.extraloaders causes implicit loading template filter functions at loading (3rd party) extension. This change requires that "templatefilter" attribute of (3rd party) extension is registrar.templatefilter or so.
Sun, 14 Feb 2016 20:43:30 +0900 revset: inline _getaliasarg() function
Yuya Nishihara <yuya@tcha.org> [Sun, 14 Feb 2016 20:43:30 +0900] rev 28691
revset: inline _getaliasarg() function This function is now much simpler than before. Inlining small functions helps to extract a reusable alias processor.
Sun, 14 Feb 2016 20:27:08 +0900 revset: drop redundant check for unknown alias arguments
Yuya Nishihara <yuya@tcha.org> [Sun, 14 Feb 2016 20:27:08 +0900] rev 28690
revset: drop redundant check for unknown alias arguments Since _parsealiasdefn() rejects unknown alias arguments, _checkaliasarg() is unnecessary. New test is added to make sure unknown '$n' symbols are rejected.
Sun, 14 Feb 2016 19:48:33 +0900 revset: move tagging of alias arguments from tokenization to parsing phase
Yuya Nishihara <yuya@tcha.org> [Sun, 14 Feb 2016 19:48:33 +0900] rev 28689
revset: move tagging of alias arguments from tokenization to parsing phase In short, this patch moves the hack from tokenizedefn() to _relabelaliasargs(), which is called after parsing. This change aims to eliminate tight dependency on the revset tokenizer. Before this patch, we had to rewrite an alias argument to a pseudo function: "$1" -> "_aliasarg('$1')" ('symbol', '$1') -> ('function', ('symbol', '_aliasarg'), ('string', '$1')) This was because the tokenizer must generate tokens that are syntactically valid. By moving the process to the parsing phase, we can assign a unique tag to an alias argument. ('symbol', '$1') -> ('_aliasarg', '$1') Since new _aliasarg node never be generated from a user input, we no longer have to verify a user input at findaliases(). The test for _aliasarg("$1") is removed as it is syntactically valid and should pass the parsing phase.
Sun, 14 Feb 2016 21:46:50 +0900 revset: add test that should fail if '_aliasarg' tag is removed
Yuya Nishihara <yuya@tcha.org> [Sun, 14 Feb 2016 21:46:50 +0900] rev 28688
revset: add test that should fail if '_aliasarg' tag is removed I'm going to refactor the alias processing functions. We need '_aliasarg' tag to limit the scope of the alias expansion, but it wasn't covered by the test. This patch adds the test that should fail if '_aliasarg' were 'symbol'. This is the first half of the second part of the "template alias" series. The whole series will consist of the following parts: 1. make parsed template tree to be compatible with parser functions (1d461ee26e1b and 73d01cba5810) 2. refactor alias processing to be less dependent on revset module (1/2 in this series) 3. extract reusable component to parser module 4. clean up it 5. extend it to support template syntax 6. add debugging/testing functions of template aliases 7. add alias expansion routine to templater
(0) -10000 -3000 -1000 -300 -100 -50 -30 +30 +50 +100 +300 +1000 +3000 +10000 tip