[PATCH 05 of 17 RFC] clfilter: split `revlog.headrevs` C call from python code

pierre-yves.david at logilab.fr pierre-yves.david at logilab.fr
Mon Sep 3 07:58:29 CDT 2012


# HG changeset patch
# User Pierre-Yves David <pierre-yves.david at logilab.fr>
# Date 1346674785 -7200
# Node ID 27c1b57964bf1b37e9a8c5bb6de91dd344d4d00b
# Parent  36e21910851f62730e61e2686e44de2cc74dcac4
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