Wed, 12 Mar 2014 17:18:54 -0700 revset: made ascgeneratorset a private class
Lucas Moscovicz <lmoscovicz@fb.com> [Wed, 12 Mar 2014 17:18:54 -0700] rev 20706
revset: made ascgeneratorset a private class This class is not supposed to be used outside revset.py since it only wraps content that is used by baseset typed classes. It only gets created by revset operations or private methods.
Wed, 12 Mar 2014 17:07:38 -0700 revset: made generatorset a private class
Lucas Moscovicz <lmoscovicz@fb.com> [Wed, 12 Mar 2014 17:07:38 -0700] rev 20705
revset: made generatorset a private class This class are not supposed to be used outside revset.py since it only wraps content that is used by baseset typed classes. It only gets created by revset operations or private methods.
Wed, 05 Mar 2014 18:49:47 -0800 cmdutil: changed walkchangerevs to use spanset instead of baseset
Lucas Moscovicz <lmoscovicz@fb.com> [Wed, 05 Mar 2014 18:49:47 -0800] rev 20704
cmdutil: changed walkchangerevs to use spanset instead of baseset Using a spanset takes almost no memory at all. A baseset builds the entire list in memory and is much slower for methods like __contains__.
Mon, 24 Feb 2014 16:36:17 -0800 revset: added sort methods to generatorsets
Lucas Moscovicz <lmoscovicz@fb.com> [Mon, 24 Feb 2014 16:36:17 -0800] rev 20703
revset: added sort methods to generatorsets Method needed to propagate sort calls amongst lazy structures. The generated list (stored in the object) is sorted. If the generated list did not contain all elements from the generator, we take care of that before sorting the list.
Thu, 13 Mar 2014 12:05:08 -0500 merge with stable
Matt Mackall <mpm@selenic.com> [Thu, 13 Mar 2014 12:05:08 -0500] rev 20702
merge with stable
Tue, 04 Feb 2014 18:33:25 -0500 fix_bytesmod: use the "from mercurial" form of the import to avoid breaking httpclient
Augie Fackler <raf@durin42.com> [Tue, 04 Feb 2014 18:33:25 -0500] rev 20701
fix_bytesmod: use the "from mercurial" form of the import to avoid breaking httpclient Without this patch, 2to3's rewrites to httpclient cause it to fail to import. With this patch, it's probably hopelessly broken, but at least won't block forward progress on non-http2 functionality on Python 3.
Thu, 13 Mar 2014 19:48:41 +0900 commit: create new amend changeset as secret correctly for "--secret" option stable
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Thu, 13 Mar 2014 19:48:41 +0900] rev 20700
commit: create new amend changeset as secret correctly for "--secret" option Before this patch, "hg commit --amend --secret" doesn't create new amend changeset as secret, even though the internal function "commitfunc()" passed to "cmdutil.amend()" make "phases.new-commit" configuration as "secret" temporarily. "cmdutil.amend()" uses specified "commitfunc" only for temporary amend commit, and creates the final amend commit changeset by "localrepository.commitctx()" directly with memctx. This patch creates new amend changeset as secret correctly for "--secret" option, by changing "phases.new-commit" configuration temporarily before "localrepository.commitctx()".
Wed, 12 Mar 2014 10:26:48 +0200 hg log: solves bug regarding hg log -r 0:null (issue4039) stable
Cristian Zamfir <cristi_zmf@yahoo.com> [Wed, 12 Mar 2014 10:26:48 +0200] rev 20699
hg log: solves bug regarding hg log -r 0:null (issue4039) 'hg log -r 0:null' was showing only one changeset(the '-1' one) instead of the first two changesets.
Mon, 10 Mar 2014 17:52:42 -0400 killdaemons: drop superfluous L suffix from constant
Augie Fackler <raf@durin42.com> [Mon, 10 Mar 2014 17:52:42 -0400] rev 20698
killdaemons: drop superfluous L suffix from constant As far as I'm aware PEP 237[0] means this suffix is superfluous even on Python 2.4, and we can just drop it, which makes this code happy on Python 3. 0: http://legacy.python.org/dev/peps/pep-0237/
Wed, 12 Mar 2014 18:28:57 -0400 setup.py: fix 2.4 breakage in 77ab0abb
Augie Fackler <raf@durin42.com> [Wed, 12 Mar 2014 18:28:57 -0400] rev 20697
setup.py: fix 2.4 breakage in 77ab0abb
Thu, 19 Sep 2013 15:38:42 -0400 setup: handle more invalid python3 syntax
Augie Fackler <raf@durin42.com> [Thu, 19 Sep 2013 15:38:42 -0400] rev 20696
setup: handle more invalid python3 syntax This should keep the file portable to both python2 and python3.
Fri, 07 Mar 2014 14:06:49 -0800 revset: changed __add__ methods on lazy sets to return addsets (issue4191)
Lucas Moscovicz <lmoscovicz@fb.com> [Fri, 07 Mar 2014 14:06:49 -0800] rev 20695
revset: changed __add__ methods on lazy sets to return addsets (issue4191) Performance Benchmarking: $ hg --time log --graph --style compact --limit 6 -r 'sort((::. or bookmark() or heads(public())), "-rev")' time: real 1.540 secs (user 1.510+0.000 sys 0.020+0.000) $ ./hg --time log --graph --style compact --limit 6 -r 'sort((::. or bookmark() or heads(public())), "-rev")' time: real 1.240 secs (user 1.190+0.000 sys 0.040+0.010)
Fri, 07 Mar 2014 13:48:31 -0800 revset: added addset class with its basic methods
Lucas Moscovicz <lmoscovicz@fb.com> [Fri, 07 Mar 2014 13:48:31 -0800] rev 20694
revset: added addset class with its basic methods This class addresses the problem of losing performance on the __contains__ method when adding two smart structures with fast membership testing.
Tue, 11 Feb 2014 14:03:43 -0800 revset: changed _children method to use lazy structures
Lucas Moscovicz <lmoscovicz@fb.com> [Tue, 11 Feb 2014 14:03:43 -0800] rev 20693
revset: changed _children method to use lazy structures
Mon, 10 Feb 2014 12:26:45 -0800 revset: changed descendants revset to use lazy generators
Lucas Moscovicz <lmoscovicz@fb.com> [Mon, 10 Feb 2014 12:26:45 -0800] rev 20692
revset: changed descendants revset to use lazy generators Performance Benchmarking: $ time hg log -qr "0:: and 0:5" ... real 0m3.665s user 0m3.364s sys 0m0.289s $ time ./hg log -qr "0:: and 0:5" ... real 0m0.492s user 0m0.394s sys 0m0.097s
Fri, 07 Feb 2014 13:44:57 -0800 revset: optimized _revancestors method based on order of revisions
Lucas Moscovicz <lmoscovicz@fb.com> [Fri, 07 Feb 2014 13:44:57 -0800] rev 20691
revset: optimized _revancestors method based on order of revisions If the revisions for which the ancestors are required are in descending order, it lazily loads them into a heap to be able to yield values faster.
Fri, 07 Feb 2014 10:32:02 -0800 revset: changed ancestors revset to return lazy generators
Lucas Moscovicz <lmoscovicz@fb.com> [Fri, 07 Feb 2014 10:32:02 -0800] rev 20690
revset: changed ancestors revset to return lazy generators This will not improve revsets like "::tip" but will do when that gets intersected or substracted with another revset. Performance Benchmarking: $ time hg log -qr "draft() and ::tip" ... real 0m3.961s user 0m3.640s sys 0m0.313s $ time ./hg log -qr "draft() and ::tip" ... real 0m1.080s user 0m0.987s sys 0m0.083s
Tue, 11 Mar 2014 14:36:40 +0900 doc: show short description of each commands in generated documents
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Tue, 11 Mar 2014 14:36:40 +0900] rev 20689
doc: show short description of each commands in generated documents Before this patch, short description of each commands is not shown in generated documents (HTML file and UNIX man page). This omitting may prevent users from understanding about commands. This patch show it as the 1st paragraph in the help section of each commands. This style is chosen because: - showing it as the section title in "command - short desc" style disallows referencing by "#command" in HTML file: in "en" locale, hyphen concatenated title is used as the section ID in HTML file for this style - showing it as the 1st paragraph in "command - short desc" style seems to be redundant: "command" appears also just before as the section title - showing it just after synopsis like "hg help command" seems not to be reasonable in UNIX man page This patch just writes short description ("d['desc'][0]") before "::", because it should be already "strip()"-ed in "get_desc()", or empty string for the command without description.
Wed, 12 Mar 2014 13:31:27 -0400 check-code: disallow use of dict(key=value) construction
Augie Fackler <raf@durin42.com> [Wed, 12 Mar 2014 13:31:27 -0400] rev 20688
check-code: disallow use of dict(key=value) construction {} literals are faster and more consistent across Python 2 and 3. Whitelisted the one use of dict() that is using a generator expresion.
Wed, 12 Mar 2014 13:29:29 -0400 setup.py: move from dict() construction to {} literals
Augie Fackler <raf@durin42.com> [Wed, 12 Mar 2014 13:29:29 -0400] rev 20687
setup.py: move from dict() construction to {} literals The latter are both faster and more consistent across Python 2 and 3.
Wed, 12 Mar 2014 13:21:30 -0400 test-wireproto: move from dict() construction to {} literals
Augie Fackler <raf@durin42.com> [Wed, 12 Mar 2014 13:21:30 -0400] rev 20686
test-wireproto: move from dict() construction to {} literals The latter are both faster and more consistent across Python 2 and 3.
Wed, 12 Mar 2014 13:21:17 -0400 test-url: move from dict() construction to {} literals
Augie Fackler <raf@durin42.com> [Wed, 12 Mar 2014 13:21:17 -0400] rev 20685
test-url: move from dict() construction to {} literals The latter are both faster and more consistent across Python 2 and 3.
Wed, 12 Mar 2014 13:21:02 -0400 test-filelog: move from dict() construction to {} literals
Augie Fackler <raf@durin42.com> [Wed, 12 Mar 2014 13:21:02 -0400] rev 20684
test-filelog: move from dict() construction to {} literals The latter are both faster and more consistent across Python 2 and 3.
Wed, 12 Mar 2014 13:20:42 -0400 templatekw: move from dict() construction to {} literals
Augie Fackler <raf@durin42.com> [Wed, 12 Mar 2014 13:20:42 -0400] rev 20683
templatekw: move from dict() construction to {} literals The latter are both faster and more consistent across Python 2 and 3.
Wed, 12 Mar 2014 13:20:24 -0400 minirst: move from dict() construction to {} literals
Augie Fackler <raf@durin42.com> [Wed, 12 Mar 2014 13:20:24 -0400] rev 20682
minirst: move from dict() construction to {} literals The latter are both faster and more consistent across Python 2 and 3.
Wed, 12 Mar 2014 13:20:04 -0400 webutil: move from dict() construction to {} literals
Augie Fackler <raf@durin42.com> [Wed, 12 Mar 2014 13:20:04 -0400] rev 20681
webutil: move from dict() construction to {} literals The latter are both faster and more consistent across Python 2 and 3.
Wed, 12 Mar 2014 13:19:43 -0400 run-tests: move from dict() construction to {} literals
Augie Fackler <raf@durin42.com> [Wed, 12 Mar 2014 13:19:43 -0400] rev 20680
run-tests: move from dict() construction to {} literals The latter are both faster and more consistent across Python 2 and 3.
Wed, 12 Mar 2014 13:19:20 -0400 util: move from dict() construction to {} literals
Augie Fackler <raf@durin42.com> [Wed, 12 Mar 2014 13:19:20 -0400] rev 20679
util: move from dict() construction to {} literals The latter are both faster and more consistent across Python 2 and 3.
Wed, 12 Mar 2014 13:29:07 -0400 webcommands: move from dict() construction to {} literals
Augie Fackler <raf@durin42.com> [Wed, 12 Mar 2014 13:29:07 -0400] rev 20678
webcommands: move from dict() construction to {} literals The latter are both faster and more consistent across Python 2 and 3.
Wed, 12 Mar 2014 13:15:37 -0400 hgwebdir_mod: move from dict() construction to {} literals
Augie Fackler <raf@durin42.com> [Wed, 12 Mar 2014 13:15:37 -0400] rev 20677
hgwebdir_mod: move from dict() construction to {} literals The latter are both faster and more consistent across Python 2 and 3.
Wed, 12 Mar 2014 13:15:09 -0400 filemerge: move from dict() construction to {} literals
Augie Fackler <raf@durin42.com> [Wed, 12 Mar 2014 13:15:09 -0400] rev 20676
filemerge: move from dict() construction to {} literals The latter are both faster and more consistent across Python 2 and 3.
Wed, 12 Mar 2014 13:14:31 -0400 changegroup: move from dict() construction to {} literals
Augie Fackler <raf@durin42.com> [Wed, 12 Mar 2014 13:14:31 -0400] rev 20675
changegroup: move from dict() construction to {} literals The latter are both faster and more consistent across Python 2 and 3.
Wed, 12 Mar 2014 13:13:42 -0400 extdiff: move from dict() construction to {} literals
Augie Fackler <raf@durin42.com> [Wed, 12 Mar 2014 13:13:42 -0400] rev 20674
extdiff: move from dict() construction to {} literals The latter are both faster and more consistent across Python 2 and 3.
Wed, 12 Mar 2014 13:13:10 -0400 bugzilla: move from dict() construction to {} literals
Augie Fackler <raf@durin42.com> [Wed, 12 Mar 2014 13:13:10 -0400] rev 20673
bugzilla: move from dict() construction to {} literals The latter are both faster and more consistent across Python 2 and 3.
Wed, 12 Mar 2014 13:12:26 -0400 synthrepo: move from dict() construction to {} literals
Augie Fackler <raf@durin42.com> [Wed, 12 Mar 2014 13:12:26 -0400] rev 20672
synthrepo: move from dict() construction to {} literals The latter are both faster and more consistent across Python 2 and 3.
Wed, 12 Mar 2014 13:00:51 -0400 wireproto: remove todict() and use {} literals instead
Augie Fackler <raf@durin42.com> [Wed, 12 Mar 2014 13:00:51 -0400] rev 20671
wireproto: remove todict() and use {} literals instead
Tue, 11 Mar 2014 16:19:08 -0500 merge with stable
Matt Mackall <mpm@selenic.com> [Tue, 11 Mar 2014 16:19:08 -0500] rev 20670
merge with stable
Mon, 10 Mar 2014 15:00:41 -0500 templater: deprecate --style now that -T exists
Matt Mackall <mpm@selenic.com> [Mon, 10 Mar 2014 15:00:41 -0500] rev 20669
templater: deprecate --style now that -T exists
Sat, 08 Mar 2014 17:38:50 -0600 templating: make -T much more flexible
Matt Mackall <mpm@selenic.com> [Sat, 08 Mar 2014 17:38:50 -0600] rev 20668
templating: make -T much more flexible It can now accept styles and paths and references to settings in [templates].
Sat, 08 Mar 2014 16:14:08 -0600 changeset_templater: remove use_template method
Matt Mackall <mpm@selenic.com> [Sat, 08 Mar 2014 16:14:08 -0600] rev 20667
changeset_templater: remove use_template method
Sat, 08 Mar 2014 16:01:58 -0600 cmdutil: make helper function to process template args
Matt Mackall <mpm@selenic.com> [Sat, 08 Mar 2014 16:01:58 -0600] rev 20666
cmdutil: make helper function to process template args
Sat, 08 Mar 2014 15:27:25 -0600 commands: add -T alternative to --template
Matt Mackall <mpm@selenic.com> [Sat, 08 Mar 2014 15:27:25 -0600] rev 20665
commands: add -T alternative to --template
Fri, 07 Mar 2014 14:29:26 -0500 config: clarify and exemplify the user name in the sample config file
Jordi Gutiérrez Hermoso <jordigh@octave.org> [Fri, 07 Mar 2014 14:29:26 -0500] rev 20664
config: clarify and exemplify the user name in the sample config file
Mon, 10 Mar 2014 01:01:43 +0900 templater: make strings in template expressions be "string-escape"-ed correctly stable
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 10 Mar 2014 01:01:43 +0900] rev 20663
templater: make strings in template expressions be "string-escape"-ed correctly Changeset 64b4f0cd7336 (released with 2.8.1) fixed "recursively evaluate string literals as templates" problem (issue4102) by moving the location of "string-escape"-ing from "tokenizer()" to "compiletemplate()". But some parts in template expressions below are not processed by "compiletemplate()", and it may cause unexpected result. - 'expr' of 'if(expr, then, else)' - 'expr's of 'ifeq(expr, expr, then, else)' - 'sep' of 'join(list, sep)' - 'text' and 'style' of 'rstdoc(text, style)' - 'text' and 'chars' of 'strip(text, chars)' - 'pat' and 'repl' of 'sub(pat, repl, expr)' For example, '\n' of "{join(extras, '\n')}" is not "string-escape"-ed and treated as a literal '\n'. This breaks "Display the contents of the 'extra' field, one per line" example in "hg help templates". Just "string-escape"-ing on each parts above may not work correctly, because inside expression of nested ones already applies "string-escape" on string literals. For example: - "{join(files, '\n')}" doesn't return "string-escape"-ed string, but - "{join(files, if(branch, '\n', '\n'))}" does To fix this problem, this patch does: - introduce "rawstring" token and "runrawstring" method to handle strings not to be "string-escape"-ed correctly, and - make "runstring" method return "string-escape"-ed string, and delay "string-escape"-ing until evaluation This patch invokes "compiletemplate()" with "strtoken=exp[0]" in "gettemplate()", because "exp[1]" is not yet evaluated. This code path is tested via mapping ("expr % '{template}'"). In the other hand, this patch invokes it with "strtoken='rawstring'" in "_evalifliteral()", because "t" is the result of "arg" evaluation and it should be "string-escape"-ed if "arg" is "string" expression. This patch doesn't test "string-escape"-ing on 'expr' of 'if(expr, then, else)', because it doesn't affect the result.
Mon, 10 Mar 2014 01:01:43 +0900 templater: apply "stringify()" on sub expression to get string correctly stable
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 10 Mar 2014 01:01:43 +0900] rev 20662
templater: apply "stringify()" on sub expression to get string correctly Templating syntax allows nested expression to be specified as parts below, but they are evaluated as a generator and don't work correctly. - 'sep' of 'join(list, sep)' - 'text' and 'chars' of 'strip(text, chars)' In the former case, 'sep' returns expected string only for the first separation, and empty one for the second or later, because the generator has only one element. In the latter case, templating is aborted by exception, because the generator doesn't have 'strip()' method (as 'text') and can't be passed as the argument to 'str.strip()' (as 'chars'). This patch applies "stringify()" on these sub expression to get string correctly.
Mon, 10 Mar 2014 01:01:42 +0900 templater: avoid recursive evaluation of string literals completely stable
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 10 Mar 2014 01:01:42 +0900] rev 20661
templater: avoid recursive evaluation of string literals completely Changeset 3d8bfe2ecf6d (released with 2.8.1) fixed "recursively evaluate string literals as templates" problem (issue4103) by introducing "_evalifliteral()". But some parts in template expressions below are still processed by the combination of "compiletemplate()" and "runtemplate()", and may cause same problem unexpectedly. - 'init' and 'hang' of 'fill(text, width, init, hang)' - 'expr' of 'sub(pat, repl, expr)' - 'label' of 'label(label, expr)' This patch processes them by "_evalifliteral()" instead of the combination of "compiletemplate()" and "runtemplate()" to avoid recursive evaluation of string literals completely.
Thu, 06 Mar 2014 17:26:49 -0600 status: improve explanation of ' ' status
Matt Mackall <mpm@selenic.com> [Thu, 06 Mar 2014 17:26:49 -0600] rev 20660
status: improve explanation of ' ' status a) it shows for states other than 'A' b) it only shows with --copies
Tue, 18 Feb 2014 13:07:08 -0800 revset: changed methods in spanset to return ordered sets
Lucas Moscovicz <lmoscovicz@fb.com> [Tue, 18 Feb 2014 13:07:08 -0800] rev 20659
revset: changed methods in spanset to return ordered sets Now __sub__ and __and__ can smartly return ordered lazysets.
(0) -10000 -3000 -1000 -300 -100 -48 +48 +100 +300 +1000 +3000 +10000 +30000 tip