- Feb 18, 2014
-
-
Lucas Moscovicz authored
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)
-
- Mar 14, 2014
-
-
Lucas Moscovicz authored
Now _addset can use the lazy min and max implementation.
-
Pierre-Yves David authored
We are now able to create empty baseset using `baseset()` as we are able to create empty list with `list()`.
-
- Mar 13, 2014
-
-
Lucas Moscovicz authored
Now orderedlazyset can use the lazy min and max implementation.
-
Lucas Moscovicz authored
Now spanset can use the lazy min and max methods implementation.
-
- Mar 12, 2014
-
-
Lucas Moscovicz authored
This class has utility methods for any ordered class to get the min and the max values.
-
- Feb 19, 2014
-
-
Lucas Moscovicz authored
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.
-
- Mar 14, 2014
-
-
Pierre-Yves David authored
This help fine control of what we want to benchmark
-
Pierre-Yves David authored
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.
-
Lucas Moscovicz authored
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.
-
Lucas Moscovicz authored
Added list of revsets used for benchmarking revset performance so far.
-
- Feb 17, 2014
-
-
Simon Heimberg authored
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.
-
- Dec 05, 2013
-
-
Chris Jerdonek authored
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.
-
- Mar 14, 2014
-
-
Matt Mackall authored
-
- Dec 31, 2013
-
-
Chris Jerdonek authored
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.
-
- Mar 14, 2014
-
-
Pierre-Yves David authored
(clean up some old irrelevant comment in the process)
-
Pierre-Yves David authored
-
Lucas Moscovicz authored
-
- Mar 12, 2014
-
-
Lucas Moscovicz authored
-
- Mar 14, 2014
-
-
Matt Mackall authored
-
- Mar 12, 2014
-
-
Lucas Moscovicz authored
Now when adding two structures that are ordered, they are wrapped into an _addset and they get added lazily while keeping the order.
-
- Mar 14, 2014
-
-
Lucas Moscovicz authored
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.
-
Lucas Moscovicz authored
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.
-
Lucas Moscovicz authored
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.
-
Lucas Moscovicz authored
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.
-
Lucas Moscovicz authored
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.
-
Lucas Moscovicz authored
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.
-
Lucas Moscovicz authored
All this methods are required to duck-type for any class that works as a smart set.
-
Lucas Moscovicz authored
Use other instead of x and condition instead of l
-
- Mar 12, 2014
-
-
Lucas Moscovicz authored
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.
-
Lucas Moscovicz authored
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.
-
- Mar 14, 2014
-
-
Lucas Moscovicz authored
This method is needed to duck type generatorset.
-
- Mar 13, 2014
-
-
Lucas Moscovicz authored
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.
-
Lucas Moscovicz authored
Now when all the elements have been generated, the iterator will just use the generated list instead of going through all the elements again.
-
- Mar 11, 2014
-
-
Lucas Moscovicz authored
This way when all the values have been generated the list can be sorted without having to generate them all again.
-
- Mar 14, 2014
-
-
Lucas Moscovicz authored
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.
-
Lucas Moscovicz authored
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.
-
Lucas Moscovicz authored
This tests are intended to test sort in many different cases where it could fail when using the new structures
-
Lucas Moscovicz authored
Implemented it in a lazy way, just look for the first non-filtered revision and return True if there's any revision at all.
-
- Jun 25, 2011
-
-
Pierre-Yves David authored
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.
-