diff mercurial/revlog.py @ 44525:6c906eaedd0d

nodemap: track the tip_node for validation Differential Revision: https://phab.mercurial-scm.org/D8184
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Thu, 27 Feb 2020 16:32:43 +0100
parents e7fff9c3cdac
children 64e2f603de9d
line wrap: on
line diff
--- a/mercurial/revlog.py	Thu Feb 27 15:42:04 2020 +0100
+++ b/mercurial/revlog.py	Thu Feb 27 16:32:43 2020 +0100
@@ -643,8 +643,11 @@
             if use_nodemap:
                 nodemap_data = nodemaputil.persisted_data(self)
                 if nodemap_data is not None:
-                    self._nodemap_docket = nodemap_data[0]
-                    index.update_nodemap_data(*nodemap_data)
+                    docket = nodemap_data[0]
+                    if d[0][docket.tip_rev][7] == docket.tip_node:
+                        # no changelog tampering
+                        self._nodemap_docket = docket
+                        index.update_nodemap_data(*nodemap_data)
         except (ValueError, IndexError):
             raise error.RevlogError(
                 _(b"index %s is corrupted") % self.indexfile