Tue, 18 Feb 2014 11:35:03 -0800 revset: changed minrev and maxrev implementations to use ordered sets
Lucas Moscovicz <lmoscovicz@fb.com> [Tue, 18 Feb 2014 11:35:03 -0800] rev 20754
revset: changed minrev and maxrev implementations to use ordered sets Performance Benchmarking: 0) max(tip:0) 1) min(0:tip) 2) min(0::) b96cb15ec9e0 (2.9.1 release) 0) ! wall 0.005699 comb 0.000000 user 0.000000 sys 0.000000 (best of 450) 1) ! wall 0.005414 comb 0.010000 user 0.010000 sys 0.000000 (best of 493) 2) ! wall 0.025951 comb 0.030000 user 0.030000 sys 0.000000 (best of 107) 05267e6e94dd (public tip at submission time) 0) ! wall 0.015177 comb 0.020000 user 0.020000 sys 0.000000 (best of 175) 1) ! wall 0.014779 comb 0.010000 user 0.010000 sys 0.000000 (best of 189) 2) ! wall 12.345179 comb 12.350000 user 12.350000 sys 0.000000 (best of 3) Current patches: 0) ! wall 0.001911 comb 0.000000 user 0.000000 sys 0.000000 (best of 1357) 1) ! wall 0.001943 comb 0.010000 user 0.010000 sys 0.000000 (best of 1406) 2) ! wall 0.000405 comb 0.000000 user 0.000000 sys 0.000000 (best of 6761)
Fri, 14 Mar 2014 14:43:44 -0700 revset: changed addset to extend _orderedsetmixin
Lucas Moscovicz <lmoscovicz@fb.com> [Fri, 14 Mar 2014 14:43:44 -0700] rev 20753
revset: changed addset to extend _orderedsetmixin Now _addset can use the lazy min and max implementation.
Fri, 14 Mar 2014 11:41:26 -0700 revset: add a default argument for baseset.__init__
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 14 Mar 2014 11:41:26 -0700] rev 20752
revset: add a default argument for baseset.__init__ We are now able to create empty baseset using `baseset()` as we are able to create empty list with `list()`.
Thu, 13 Mar 2014 11:36:45 -0700 revset: changed orderedlazyset to also extend _orderedsetmixin
Lucas Moscovicz <lmoscovicz@fb.com> [Thu, 13 Mar 2014 11:36:45 -0700] rev 20751
revset: changed orderedlazyset to also extend _orderedsetmixin Now orderedlazyset can use the lazy min and max implementation.
Thu, 13 Mar 2014 11:36:11 -0700 revset: changed spanset to extend _orderedsetmixin
Lucas Moscovicz <lmoscovicz@fb.com> [Thu, 13 Mar 2014 11:36:11 -0700] rev 20750
revset: changed spanset to extend _orderedsetmixin Now spanset can use the lazy min and max methods implementation.
Wed, 12 Mar 2014 16:40:18 -0700 revset: added _orderedsetmixin class
Lucas Moscovicz <lmoscovicz@fb.com> [Wed, 12 Mar 2014 16:40:18 -0700] rev 20749
revset: added _orderedsetmixin class This class has utility methods for any ordered class to get the min and the max values.
Wed, 19 Feb 2014 09:28:17 -0800 revset: added min and max methods to baseset and lazyset
Lucas Moscovicz <lmoscovicz@fb.com> [Wed, 19 Feb 2014 09:28:17 -0800] rev 20748
revset: added min and max methods to baseset and lazyset This classes have no particular order so they rely on python min() and max() implementation. This methods will be implemented in every smartset class in future patches. For other classes there are lazy implementations that can be made for this methods.
Fri, 14 Mar 2014 15:47:29 -0700 contrib: make revset benchmark script able to read from stdin
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 14 Mar 2014 15:47:29 -0700] rev 20747
contrib: make revset benchmark script able to read from stdin This help fine control of what we want to benchmark
Fri, 14 Mar 2014 15:43:55 -0700 contrib: have the revset benchmark test script take a revset
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 14 Mar 2014 15:43:55 -0700] rev 20746
contrib: have the revset benchmark test script take a revset The script now selection revision to run benchmark against using a revset query instead of a revision range. It is expected that people benchmarking revset have some knowledge of revset.
Fri, 14 Mar 2014 11:24:59 -0700 contrib: added revset performance benchmarking script
Lucas Moscovicz <lmoscovicz@fb.com> [Fri, 14 Mar 2014 11:24:59 -0700] rev 20745
contrib: added revset performance benchmarking script This script takes two arguments (starting revision, ending revision) and tests for each revision in between the entire list of revsets in the script using perfrevset.
Fri, 14 Mar 2014 15:00:15 -0700 contrib: added revset examples for benchmarking performance
Lucas Moscovicz <lmoscovicz@fb.com> [Fri, 14 Mar 2014 15:00:15 -0700] rev 20744
contrib: added revset examples for benchmarking performance Added list of revsets used for benchmarking revset performance so far.
Mon, 17 Feb 2014 07:39:53 +0100 help: filter out deprecated options with untranslated descriptions
Simon Heimberg <simohe@besonet.ch> [Mon, 17 Feb 2014 07:39:53 +0100] rev 20743
help: filter out deprecated options with untranslated descriptions When using a different language than English, deprecated options were only removed from the output of `hg help anycmd` when "DEPRECATED" in the options description was translated.
Wed, 04 Dec 2013 20:38:27 -0800 parsers: fail fast if Python has wrong minor version (issue4110)
Chris Jerdonek <chris.jerdonek@gmail.com> [Wed, 04 Dec 2013 20:38:27 -0800] rev 20742
parsers: fail fast if Python has wrong minor version (issue4110) This change causes an informative ImportError to be raised when importing the parsers extension module if the minor version of the currently-running Python interpreter doesn't match that of the Python used when compiling the extension module. This change also exposes a parsers.versionerrortext constant in the C implementation of the module. Its presence can be used to determine whether this behavior is present in a version of the module. The value of the constant is the leading text of the ImportError raised and is set to "Python minor version mismatch". Here is an example of what the new error looks like: Traceback (most recent call last): File "test.py", line 1, in <module> import mercurial.parsers ImportError: Python minor version mismatch: The Mercurial extension modules were compiled with Python 2.7.6, but Mercurial is currently using Python with sys.hexversion=33883888: Python 2.5.6 (r256:88840, Nov 18 2012, 05:37:10) [GCC 4.2.1 Compatible Apple Clang 4.1 ((tags/Apple/clang-421.11.66))] at: /opt/local/Library/Frameworks/Python.framework/Versions/2.5/Resources/ Python.app/Contents/MacOS/Python The reason for raising an error in this scenario is that Python's C API is known not to be compatible from minor version to minor version, even if sys.api_version is the same. See for example this Python bug report about incompatibilities between 2.5 and 2.6+: http://bugs.python.org/issue8118 These incompatibilities can cause Mercurial to break in mysterious, unforeseen ways. For example, when Mercurial compiled with Python 2.7 was run with 2.5, the following crash occurred when running "hg status": http://bz.selenic.com/show_bug.cgi?id=4110 After this crash was fixed, running with Python 2.5 no longer crashes, but the following puzzling behavior still occurs: $ hg status ... File ".../mercurial/changelog.py", line 123, in __init__ revlog.revlog.__init__(self, opener, "00changelog.i") File ".../mercurial/revlog.py", line 251, in __init__ d = self._io.parseindex(i, self._inline) File ".../mercurial/revlog.py", line 158, in parseindex index, cache = parsers.parse_index2(data, inline) TypeError: data is not a string which can be reproduced more simply with: import mercurial.parsers as parsers parsers.parse_index2("", True) Both the crash and the TypeError occurred because the Python C API's PyString_Check() returns the wrong value when the C header files from Python 2.7 are run with Python 2.5. This is an example of an incompatibility of the sort mentioned in the Python bug report above. Failing fast with an informative error message results in a better user experience in cases like the above. The information in the ImportError also simplifies troubleshooting for those on Mercurial mailing lists, the bug tracker, etc. This patch only adds the version check to parsers.c, which is sufficient to affect command-line commands like "hg status" and "hg summary". An idea for a future improvement is to move the version-checking C code to a more central location, and have it run when importing all Mercurial extension modules and not just parsers.c.
Fri, 14 Mar 2014 16:00:11 -0500 debuginstall: change showing to checking for consistency and future checking
Matt Mackall <mpm@selenic.com> [Fri, 14 Mar 2014 16:00:11 -0500] rev 20741
debuginstall: change showing to checking for consistency and future checking
Tue, 31 Dec 2013 00:37:16 -0800 debuginstall: add Python information to debuginstall output (issue4128)
Chris Jerdonek <chris.jerdonek@gmail.com> [Tue, 31 Dec 2013 00:37:16 -0800] rev 20740
debuginstall: add Python information to debuginstall output (issue4128) This change adds to the output of "hg debuginstall" information about the Python being used by Mercurial. It adds both the path to the Python executable (i.e. the value of sys.executable) and the version of Python (specifically the major, minor, and micro versions). Below is an example of what the output looks like after this change. The marked lines are the new output lines: $ hg debuginstall checking encoding (UTF-8)... -->showing Python executable (/Users/chris/.virtualenvs/default/bin/python) -->showing Python version (2.7.6) checking Python lib (/Users/chris/.virtualenvs/default/lib/python2.7)... checking installed modules (/Users/chris/mercurial)... checking templates (/Users/chris/mercurial/templates)... checking commit editor... checking username... no problems detected Note that we use the word "showing" without an ellipsis for the new lines because, unlike the other lines (except for "Python lib" which will be adjusted in a subsequent commit), no check follows the display of this information.
Fri, 14 Mar 2014 10:57:04 -0700 revset: add documentation and comment for _generatorset
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 14 Mar 2014 10:57:04 -0700] rev 20739
revset: add documentation and comment for _generatorset (clean up some old irrelevant comment in the process)
Fri, 14 Mar 2014 10:55:03 -0700 revset: add some documentation for lazyset
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 14 Mar 2014 10:55:03 -0700] rev 20738
revset: add some documentation for lazyset
Fri, 14 Mar 2014 10:59:51 -0700 revset: added documentation and comment for spanset class
Lucas Moscovicz <lmoscovicz@fb.com> [Fri, 14 Mar 2014 10:59:51 -0700] rev 20737
revset: added documentation and comment for spanset class
Tue, 11 Mar 2014 17:25:53 -0700 revset: extend sorting tests
Lucas Moscovicz <lmoscovicz@fb.com> [Tue, 11 Mar 2014 17:25:53 -0700] rev 20736
revset: extend sorting tests
Fri, 14 Mar 2014 13:12:45 -0500 merge with crew
Matt Mackall <mpm@selenic.com> [Fri, 14 Mar 2014 13:12:45 -0500] rev 20735
merge with crew
Tue, 11 Mar 2014 17:25:53 -0700 revset: changed smartset methods to return ordered addsets
Lucas Moscovicz <lmoscovicz@fb.com> [Tue, 11 Mar 2014 17:25:53 -0700] rev 20734
revset: changed smartset methods to return ordered addsets Now when adding two structures that are ordered, they are wrapped into an _addset and they get added lazily while keeping the order.
Fri, 14 Mar 2014 10:24:09 -0700 revset: added isascending and isdescending methods to _addset
Lucas Moscovicz <lmoscovicz@fb.com> [Fri, 14 Mar 2014 10:24:09 -0700] rev 20733
revset: added isascending and isdescending methods to _addset This methods are intended to duck-type baseset, so we will still have _addset as a private class but now we can return it without wrapping it into an orderedlazyset or a lazyset. These were the last methods to add for smartset compatibility.
Fri, 14 Mar 2014 10:23:54 -0700 revset: added __add__ method to _addset
Lucas Moscovicz <lmoscovicz@fb.com> [Fri, 14 Mar 2014 10:23:54 -0700] rev 20732
revset: added __add__ method to _addset This method is intended to duck-type baseset, so we will still have _addset as a private class but we will be able to return it without wrapping it into an orderedlazyset or a lazyset.
Fri, 14 Mar 2014 10:22:51 -0700 revset: added __sub__ mehtod to _addset
Lucas Moscovicz <lmoscovicz@fb.com> [Fri, 14 Mar 2014 10:22:51 -0700] rev 20731
revset: added __sub__ mehtod to _addset This method is intended to duck-type baseset, so we will still have _addset as a private class but now will be able to return it without wrapping it into an orderedlazyset or a lazyset.
Fri, 14 Mar 2014 10:22:29 -0700 revset: added __and__ method to _addset
Lucas Moscovicz <lmoscovicz@fb.com> [Fri, 14 Mar 2014 10:22:29 -0700] rev 20730
revset: added __and__ method to _addset This method is intended to duck-type baseset, so we will still have _addset as a private class but we will be able to return it without wrapping it into an orderedlazyset or a lazyset.
Fri, 14 Mar 2014 10:21:56 -0700 revset: added ascending and descending methods to _addset
Lucas Moscovicz <lmoscovicz@fb.com> [Fri, 14 Mar 2014 10:21:56 -0700] rev 20729
revset: added ascending and descending methods to _addset This methods are intended to duck-type baseset, so we will still have _addset as a private class but will be able return it without wrapping it into an orderedlazyset or a lazyset.
Thu, 13 Mar 2014 19:12:36 -0700 revset: added filter method to _addset
Lucas Moscovicz <lmoscovicz@fb.com> [Thu, 13 Mar 2014 19:12:36 -0700] rev 20728
revset: added filter method to _addset This method is intended to duck-type baseset, so we will still have _addset as a private class but we will be able return it without wrapping it into an orderedlazyset or a lazyset.
Fri, 14 Mar 2014 09:18:14 -0700 revset: added comments to all methods needed to duck-type from baseset
Lucas Moscovicz <lmoscovicz@fb.com> [Fri, 14 Mar 2014 09:18:14 -0700] rev 20727
revset: added comments to all methods needed to duck-type from baseset All this methods are required to duck-type for any class that works as a smart set.
Fri, 14 Mar 2014 10:10:18 -0700 revset: use more explicit argument names for baseset methods
Lucas Moscovicz <lmoscovicz@fb.com> [Fri, 14 Mar 2014 10:10:18 -0700] rev 20726
revset: use more explicit argument names for baseset methods Use other instead of x and condition instead of l
Tue, 11 Mar 2014 17:09:23 -0700 revset: added isascending and isdescending methods to smartset classes
Lucas Moscovicz <lmoscovicz@fb.com> [Tue, 11 Mar 2014 17:09:23 -0700] rev 20725
revset: added isascending and isdescending methods to smartset classes This methods state if the class is sorted in an ascending or descending order We need this to implement methods based on order on smartset classes in order to be able to create new objects with a given order. We cannot just rely on a simple boolean since unordered set are neither ascending nor descending.
Tue, 11 Mar 2014 17:03:43 -0700 revset: added sort method in addset
Lucas Moscovicz <lmoscovicz@fb.com> [Tue, 11 Mar 2014 17:03:43 -0700] rev 20724
revset: added sort method in addset We need this method to duck-type generatorset since this class is not going to be used outside revset.py and we don't need to duck-type baseset. This sort method will only do something when the addset is not already sorted or is not sorted in the way we want it to be.
Thu, 13 Mar 2014 18:57:30 -0700 revset: added reverse method to addset
Lucas Moscovicz <lmoscovicz@fb.com> [Thu, 13 Mar 2014 18:57:30 -0700] rev 20723
revset: added reverse method to addset This method is needed to duck type generatorset.
Thu, 13 Mar 2014 13:29:04 -0700 revset: changed _iterator() method on addset to work with a given order
Lucas Moscovicz <lmoscovicz@fb.com> [Thu, 13 Mar 2014 13:29:04 -0700] rev 20722
revset: changed _iterator() method on addset to work with a given order If the two collections are in ascending order, yield their values in an ordered way by iterating both at the same time and picking the values to yield.
Thu, 13 Mar 2014 14:51:04 -0700 revset: changed _iterator() in addset to use the generated list when available
Lucas Moscovicz <lmoscovicz@fb.com> [Thu, 13 Mar 2014 14:51:04 -0700] rev 20721
revset: changed _iterator() in addset to use the generated list when available Now when all the elements have been generated, the iterator will just use the generated list instead of going through all the elements again.
Tue, 11 Mar 2014 16:59:42 -0700 revset: added cached generated list to addset
Lucas Moscovicz <lmoscovicz@fb.com> [Tue, 11 Mar 2014 16:59:42 -0700] rev 20720
revset: added cached generated list to addset This way when all the values have been generated the list can be sorted without having to generate them all again.
Thu, 13 Mar 2014 17:15:21 -0700 revset: changed sort method to use native sort implementation of smartsets
Lucas Moscovicz <lmoscovicz@fb.com> [Thu, 13 Mar 2014 17:15:21 -0700] rev 20719
revset: changed sort method to use native sort implementation of smartsets When sort is done by revision or reversed revision number it can just call sort on the set and doesn't have to iterate it all over again.
Thu, 13 Mar 2014 17:16:58 -0700 revset: fixed sorting issue with spanset
Lucas Moscovicz <lmoscovicz@fb.com> [Thu, 13 Mar 2014 17:16:58 -0700] rev 20718
revset: fixed sorting issue with spanset When a spanset was being sorted it didn't take into account it's current state (ascending or descending) and it reversed itself everytime the reverse parameter was True. This is not yet used but it will be as soon as the sort revset is changed to directly use the structures sort method.
Thu, 13 Mar 2014 17:20:03 -0700 tests: added tests to test sort revset
Lucas Moscovicz <lmoscovicz@fb.com> [Thu, 13 Mar 2014 17:20:03 -0700] rev 20717
tests: added tests to test sort revset This tests are intended to test sort in many different cases where it could fail when using the new structures
Fri, 14 Mar 2014 09:07:59 -0700 revset: added __nonzero__ method to spanset class
Lucas Moscovicz <lmoscovicz@fb.com> [Fri, 14 Mar 2014 09:07:59 -0700] rev 20716
revset: added __nonzero__ method to spanset class Implemented it in a lazy way, just look for the first non-filtered revision and return True if there's any revision at all.
Sat, 25 Jun 2011 02:46:23 +0200 require: provide a link to a wiki page in addition of suggesting upgrade
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Sat, 25 Jun 2011 02:46:23 +0200] rev 20715
require: provide a link to a wiki page in addition of suggesting upgrade The wiki page is intended to describe several solution to the requirement issue. Some of those solutions does not involve upgrading mercurial. That is very useful for people that can't easily upgrade they Mercurial in some place.
Thu, 06 Mar 2014 09:41:47 -0800 revset: optimized sort method in lazyset class
Lucas Moscovicz <lmoscovicz@fb.com> [Thu, 06 Mar 2014 09:41:47 -0800] rev 20714
revset: optimized sort method in lazyset class We are taking advantage of the smartset classes sort method when it exists and converting the set to a baseset otherwise.
Thu, 13 Mar 2014 13:47:21 -0700 revset: improve head revset performance
Durham Goode <durham@fb.com> [Thu, 13 Mar 2014 13:47:21 -0700] rev 20713
revset: improve head revset performance Previously the head() revset would iterate over every item in the subset and check if it was a head. Since the subset is often the entire repo, this was slow on large repos. Now we iterate over each item in the head list and check if it's in the subset, which results in much less work. hg log -r 'head()' on a large repo: Before: 0.95s After: 0.28s
Tue, 11 Mar 2014 16:52:15 -0700 revset: added ascending attribute to addset class
Lucas Moscovicz <lmoscovicz@fb.com> [Tue, 11 Mar 2014 16:52:15 -0700] rev 20712
revset: added ascending attribute to addset class In case both collections are in an ascending/descending order then we will be able to iterate them lazily while keeping the order.
Mon, 10 Mar 2014 10:49:04 -0700 revset: added set method to addset to duck type generatorset
Lucas Moscovicz <lmoscovicz@fb.com> [Mon, 10 Mar 2014 10:49:04 -0700] rev 20711
revset: added set method to addset to duck type generatorset Since this class is only going to be used inside revset.py (it does not duck type baseset) it needs to duck type only a few more methods for the next patches.
Thu, 13 Mar 2014 15:00:34 -0500 merge with default
Matt Mackall <mpm@selenic.com> [Thu, 13 Mar 2014 15:00:34 -0500] rev 20710
merge with default
Thu, 13 Mar 2014 14:34:32 -0500 revsets: backout d04aac468bf4 due to performance regressions
Matt Mackall <mpm@selenic.com> [Thu, 13 Mar 2014 14:34:32 -0500] rev 20709
revsets: backout d04aac468bf4 due to performance regressions
Wed, 12 Mar 2014 17:20:26 -0700 revset: made addset a private class
Lucas Moscovicz <lmoscovicz@fb.com> [Wed, 12 Mar 2014 17:20:26 -0700] rev 20708
revset: made addset 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:19:46 -0700 revset: made descgeneratorset a private class
Lucas Moscovicz <lmoscovicz@fb.com> [Wed, 12 Mar 2014 17:19:46 -0700] rev 20707
revset: made descgeneratorset 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.
(0) -10000 -3000 -1000 -300 -100 -48 +48 +100 +300 +1000 +3000 +10000 +30000 tip