revlog: move nodemap update within the index code
authorPierre-Yves David <pierre-yves.david@octobus.net>
Sun, 03 Nov 2019 00:15:12 +0100
changeset 43531 dcf9826c8d8c
parent 43530 6e3e3e5446ba
child 43532 53581e220ba3
revlog: move nodemap update within the index code Since the nodemap data now live in the index, it should be the index responsibility to ensure the data are up to date. This work is part of a refactoring to unify the revlog index and the nodemap. This unification prepare the use of a persistent nodemap. Differential Revision: https://phab.mercurial-scm.org/D7319
mercurial/pure/parsers.py
mercurial/revlog.py
--- a/mercurial/pure/parsers.py	Sat Nov 02 15:46:47 2019 +0100
+++ b/mercurial/pure/parsers.py	Sun Nov 03 00:15:12 2019 +0100
@@ -62,6 +62,8 @@
         return self._lgt + len(self._extra)
 
     def append(self, tup):
+        if 'nodemap' in vars(self):
+            self.nodemap[tup[7]] = len(self)
         self._extra.append(tup)
 
     def _check_index(self, i):
--- a/mercurial/revlog.py	Sat Nov 02 15:46:47 2019 +0100
+++ b/mercurial/revlog.py	Sun Nov 03 00:15:12 2019 +0100
@@ -213,6 +213,10 @@
             nodemap[n] = r
         return nodemap
 
+    def append(self, tup):
+        self.nodemap[tup[7]] = len(self)
+        super(revlogoldindex, self).append(tup)
+
     def clearcaches(self):
         self.__dict__.pop('nodemap', None)
 
@@ -2189,7 +2193,6 @@
             node,
         )
         self.index.append(e)
-        self.nodemap[node] = curr
 
         # Reset the pure node cache start lookup offset to account for new
         # revision.