Fri, 14 Mar 2014 13:27:12 -0700 cmdutil: changed max method for lazy call
Lucas Moscovicz <lmoscovicz@fb.com> [Fri, 14 Mar 2014 13:27:12 -0700] rev 20760
cmdutil: changed max method for lazy call Used the lazy max call instead of the python max implementation to be able to use lazysets for graphlog.
Fri, 14 Mar 2014 13:26:40 -0700 getgraphlogrevs: return an empty baseset instead of a empty list
Lucas Moscovicz <lmoscovicz@fb.com> [Fri, 14 Mar 2014 13:26:40 -0700] rev 20759
getgraphlogrevs: return an empty baseset instead of a empty list We aims at returning smartset only so that function higher in the stack can use smartset feature.
Fri, 14 Mar 2014 16:26:50 -0700 getgraphlogrevs: do not convert smartset to baseset
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 14 Mar 2014 16:26:50 -0700] rev 20758
getgraphlogrevs: do not convert smartset to baseset We are now sure that revs is a smartset. We remove the baseset call that would defeat any lazyness.
Fri, 14 Mar 2014 08:44:52 -0700 cmdutil: changed revset for spanset
Lucas Moscovicz <lmoscovicz@fb.com> [Fri, 14 Mar 2014 08:44:52 -0700] rev 20757
cmdutil: changed revset for spanset Instead of using baseset(repo.changelog) changed it for spanset(repo) which is much faster.
Fri, 14 Mar 2014 11:35:17 -0700 cmdutil: changed code in _makegraphlogrevset not to use getitem
Lucas Moscovicz <lmoscovicz@fb.com> [Fri, 14 Mar 2014 11:35:17 -0700] rev 20756
cmdutil: changed code in _makegraphlogrevset not to use getitem __getitem__ is a method that is not implemented lazily on many of the new classes and it can be easily replaced with a structure that takes advantage of the new lazy implementations instead.
Fri, 14 Mar 2014 08:43:52 -0700 cmdutil: changed code in getgraphlogrevs not to use getitem
Lucas Moscovicz <lmoscovicz@fb.com> [Fri, 14 Mar 2014 08:43:52 -0700] rev 20755
cmdutil: changed code in getgraphlogrevs not to use getitem __getitem__ is a method that is not implemented lazily on many of the new classes and it can be easily replaced with a structure that takes advantage of the new lazy implementations instead.
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.
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.
Tue, 25 Feb 2014 10:36:23 -0800 revset: added sort method to orderedlazyset
Lucas Moscovicz <lmoscovicz@fb.com> [Tue, 25 Feb 2014 10:36:23 -0800] rev 20658
revset: added sort method to orderedlazyset
Fri, 07 Feb 2014 08:44:18 -0800 revset: added order methods to lazyset classes
Lucas Moscovicz <lmoscovicz@fb.com> [Fri, 07 Feb 2014 08:44:18 -0800] rev 20657
revset: added order methods to lazyset classes This will allow revsets to ask for an ordered set when possible to be able to work lazily with it.
Thu, 06 Mar 2014 12:37:28 +0100 setdiscovery: document algorithms used
Olle Lundberg <geek@nerd.sh> [Thu, 06 Mar 2014 12:37:28 +0100] rev 20656
setdiscovery: document algorithms used This is taken from: http://programmers.stackexchange.com/questions/208998 And modified slightly.
Thu, 20 Feb 2014 09:17:22 +0100 doc: gendoc.py creates valid output for option descriptions with newlines
Simon Heimberg <simohe@besonet.ch> [Thu, 20 Feb 2014 09:17:22 +0100] rev 20655
doc: gendoc.py creates valid output for option descriptions with newlines gendoc.py did not handle the hanging indentation for descriptions. Work around this by joining all in one single line (same as in minirst since previous patch). This problem occurred when translations of option lines were very long. Do not bother the translators with this detail. On a long option description, the translator continued on a new line as usual. gendoc.py created invalid rst syntax like this: -o, --option Description line 1 description line 2 The new output is: -o, --option Description line 1 description line 2 The lines could theoretically become very long, but line breaking is handled when generating the final documentation.
Wed, 19 Feb 2014 17:32:21 +0100 minirst: create valid output when table data contains a newline
Simon Heimberg <simohe@besonet.ch> [Wed, 19 Feb 2014 17:32:21 +0100] rev 20654
minirst: create valid output when table data contains a newline When table data contained a newline, the result of minirst.maketable did not look nice plus it was not recognised by minirst.format: == === ==== l1 1 one l2 2 2 22 l3 == === ==== This problem occurred when the description of options had a very long translation which was split by newlines. Do not bother a translator with this detail. The multiline translations for option descriptions have been fixed in baf1600adfbe in it.po, de.po and ro.po. I manually did the same as this patch does, I removed the newlines. When a newline was in the description, this created unusable help output: $ hg help somecommand hg somecommand [option]... with somecommand, you can... options: == =================== ======================================================= =================================== --longdesc VALUE xxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -n --norm normal desc --newline VALUE line1 line2 == =================== =============== =========================================================================== now this looks much nicer: ... options: --longdesc VALUE xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -n --norm normal desc --newline VALUE line1 line2
Wed, 05 Mar 2014 14:03:08 +0100 tests: match time by a glob to fix intermittent failures of test-lock-badness.t
Simon Heimberg <simohe@besonet.ch> [Wed, 05 Mar 2014 14:03:08 +0100] rev 20653
tests: match time by a glob to fix intermittent failures of test-lock-badness.t Sometimes the lock was a bit slower and took 2 seconds. Do not fail the test by this. The glob ? matches from 0 to 9 seconds, which should be enough safety.
Wed, 05 Mar 2014 10:49:43 -0800 merge: adds documentation to the mergestate class
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 05 Mar 2014 10:49:43 -0800] rev 20652
merge: adds documentation to the mergestate class Document most the new function involved in the new serialisation process (and a few others).
Wed, 05 Mar 2014 10:22:43 -0800 merge: add blank line between mergestate's method
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 05 Mar 2014 10:22:43 -0800] rev 20651
merge: add blank line between mergestate's method This class is now too big to be a single big block of continuous text.
Mon, 03 Mar 2014 23:21:24 +0900 cmdserver: allow to start server without repository
Yuya Nishihara <yuya@tcha.org> [Mon, 03 Mar 2014 23:21:24 +0900] rev 20650
cmdserver: allow to start server without repository Typical use case is to clone repository through command server. Clone may require user interaction, so command-server protocol is beneficial over raw stdio channels.
Mon, 03 Mar 2014 23:11:17 +0900 cmdserver: prepare test for starting server without repository
Yuya Nishihara <yuya@tcha.org> [Mon, 03 Mar 2014 23:11:17 +0900] rev 20649
cmdserver: prepare test for starting server without repository
Thu, 06 Mar 2014 01:24:03 +0100 histedit: move logic for finding child nodes to new function
Olle Lundberg <geek@nerd.sh> [Thu, 06 Mar 2014 01:24:03 +0100] rev 20648
histedit: move logic for finding child nodes to new function This function will be used in later patches.
Wed, 05 Mar 2014 22:02:45 +0100 histedit: clean up lock imports
Olle Lundberg <geek@nerd.sh> [Wed, 05 Mar 2014 22:02:45 +0100] rev 20647
histedit: clean up lock imports We are alread importing the release function from lock, no need to actually import the module too.
Wed, 05 Mar 2014 17:42:05 -0800 localrepo: changed revs to use spanset instead of baseset
Lucas Moscovicz <lmoscovicz@fb.com> [Wed, 05 Mar 2014 17:42:05 -0800] rev 20646
localrepo: changed revs to use spanset instead of baseset Performance benchmarking: $ time hg log -qf -l1 ... real 0m1.420s user 0m1.249s sys 0m0.167s $ time ~/local/hg/hg log -qf -l1 ... real 0m0.719s user 0m0.614s sys 0m0.103s
Wed, 05 Mar 2014 09:31:05 +0000 extensions: use normpath to allow trailing '\' on Windows (issue4187)
Ed Morley <emorley@mozilla.com> [Wed, 05 Mar 2014 09:31:05 +0000] rev 20645
extensions: use normpath to allow trailing '\' on Windows (issue4187) Fixes same issue as 5c794e7331e7 but now works on Windows too. With this patch a trailing backward slash won't prevent the extension from being found on Windows, and we continue to support any combination of forward and back slashes within the path.
Tue, 04 Mar 2014 09:56:59 -0600 tests: fix unused imports from inotify removal caught by pyflakes
Matt Mackall <mpm@selenic.com> [Tue, 04 Mar 2014 09:56:59 -0600] rev 20644
tests: fix unused imports from inotify removal caught by pyflakes
Thu, 27 Feb 2014 17:27:03 -0800 revset: added ordered generatorset classes with __contains__ method
Lucas Moscovicz <lmoscovicz@fb.com> [Thu, 27 Feb 2014 17:27:03 -0800] rev 20643
revset: added ordered generatorset classes with __contains__ method They stop iterating as soon as they go past the value they are looking for, so, for values not in the generator they return faster.
Tue, 25 Feb 2014 20:29:46 +0100 merge: use the right ancestor when both sides copied the same file
Mads Kiilerich <madski@unity3d.com> [Tue, 25 Feb 2014 20:29:46 +0100] rev 20642
merge: use the right ancestor when both sides copied the same file The tests shows no real changes because of this ... but there must be some weird corner cases where using the right ancestor for the merge planning is better than using the wrong one.
Tue, 25 Feb 2014 20:29:14 +0100 copies: when both sides made the same copy, report it as a copy
Mads Kiilerich <madski@unity3d.com> [Tue, 25 Feb 2014 20:29:14 +0100] rev 20641
copies: when both sides made the same copy, report it as a copy Not used yet ... but shows up in debug output.
(0) -10000 -3000 -1000 -120 +120 +1000 +3000 +10000 +30000 tip