[PATCH 1 of 3] revset: wider definition of ascending and descending for spanset

Pierre-Yves David pierre-yves.david at ens-lyon.org
Thu Sep 18 13:26:24 CDT 2014


# HG changeset patch
# User Pierre-Yves David <pierre-yves.david at fb.com>
# Date 1410935658 25200
#      Tue Sep 16 23:34:18 2014 -0700
# Node ID b885794378e462baab1967d19106615d0acf6689
# Parent  a476ee0b8e799c1b9b82ad2db350c90a31274879
revset: wider definition of ascending and descending for spanset

Before this patches, empty spanset were seen as neither ascending nor
descending. This is mathematically wrong and create some edges case. We put
`isascending` and `isdescending` back on track so we can use them to simplify
some of the spanset code.

Benchmarks show no performances harmed in the process.

diff --git a/mercurial/revset.py b/mercurial/revset.py
--- a/mercurial/revset.py
+++ b/mercurial/revset.py
@@ -2833,14 +2833,14 @@ class spanset(_orderedsetmixin):
 
     def set(self):
         return self
 
     def isascending(self):
-        return self._start < self._end
+        return self._start <= self._end
 
     def isdescending(self):
-        return self._start > self._end
+        return self._start >= self._end
 
     def filter(self, l):
         if self._start <= self._end:
             return orderedlazyset(self, l)
         else:


More information about the Mercurial-devel mailing list