[PATCH 5 of 8 clfilter-part1] clfilter: split `revlog.headrevs` C call from python code

pierre-yves.david at logilab.fr pierre-yves.david at logilab.fr
Thu Sep 20 12:12:12 CDT 2012


# HG changeset patch
# User Pierre-Yves David <pierre-yves.david at logilab.fr>
# Date 1346674785 -7200
# Node ID 44939e75738049162e9d0e48ea310d1f2970a430
# Parent  90376bfc2f426a89571a1d6cb05ad068a4f512c1
clfilter: split `revlog.headrevs` C call from python code

Make the pure python implementation of headrevs available to derived classes. It
is important because filtering logic applied by `revlog` derived class won't
have effect on `index`. We want to be able to bypass this C call to implement
our own.

diff --git a/mercurial/revlog.py b/mercurial/revlog.py
--- a/mercurial/revlog.py
+++ b/mercurial/revlog.py
@@ -605,11 +605,13 @@ class revlog(object):
 
     def headrevs(self):
         try:
             return self.index.headrevs()
         except AttributeError:
-            pass
+            return self._headrevs()
+
+    def _headrevs(self):
         count = len(self)
         if not count:
             return [nullrev]
         # we won't iter over filtered rev so nobody is a head at start
         ishead = [0] * (count + 1)


More information about the Mercurial-devel mailing list