revset: added sort method in addset
authorLucas Moscovicz <lmoscovicz@fb.com>
Tue, 11 Mar 2014 17:03:43 -0700
changeset 20724 e9a64b3f2925
parent 20723 fb9852c46a42
child 20725 cf628b50afbb
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.
mercurial/revset.py
--- a/mercurial/revset.py	Thu Mar 13 18:57:30 2014 -0700
+++ b/mercurial/revset.py	Tue Mar 11 17:03:43 2014 -0700
@@ -2409,6 +2409,19 @@
     def set(self):
         return self
 
+    def sort(self, reverse=False):
+        """Sort the added set
+
+        For this we use the cached list with all the generated values and if we
+        know they are ascending or descending we can sort them in a smart way.
+        """
+        if self._ascending is None:
+            self._list.sort(reverse=reverse)
+            self._ascending = not reverse
+        else:
+            if bool(self._ascending) == bool(reverse):
+                self.reverse()
+
     def reverse(self):
         self._list.reverse()
         if self._ascending is not None: