mercurial/branchmap.py
changeset 51565 ef369d16965d
parent 51563 0d4a6ab3c8da
child 51568 a03fa40afd01
--- a/mercurial/branchmap.py	Wed Feb 28 12:56:08 2024 +0100
+++ b/mercurial/branchmap.py	Sun Feb 25 23:31:50 2024 +0100
@@ -698,26 +698,22 @@
         if max_rev is not None and max_rev > self.tiprev:
             self.tiprev = max_rev
             self.tipnode = cl.node(max_rev)
+        else:
+            # We should not be here is if this is false
+            assert cl.node(self.tiprev) == self.tipnode
 
         if not self.validfor(repo):
-            # old cache key is now invalid for the repo, but we've just updated
-            # the cache and we assume it's valid, so let's make the cache key
-            # valid as well by recomputing it from the cached data
-            self.tipnode = repo.nullid
-            self.tiprev = nullrev
-            for heads in self.iterheads():
-                if not heads:
-                    # all revisions on a branch are obsolete
-                    continue
-                # note: tiprev is not necessarily the tip revision of repo,
-                # because the tip could be obsolete (i.e. not a head)
-                tiprev = max(cl.rev(node) for node in heads)
-                if tiprev > self.tiprev:
-                    self.tipnode = cl.node(tiprev)
-                    self.tiprev = tiprev
-        self.filteredhash = scmutil.filteredhash(
-            repo, self.tiprev, needobsolete=True
-        )
+            # the tiprev and tipnode should be aligned, so if the current repo
+            # is not seens as valid this is because old cache key is now
+            # invalid for the repo.
+            #
+            # However. we've just updated the cache and we assume it's valid,
+            # so let's make the cache key valid as well by recomputing it from
+            # the cached data
+            self.filteredhash = scmutil.filteredhash(
+                repo, self.tiprev, needobsolete=True
+            )
+
         self._state = STATE_DIRTY
         tr = repo.currenttransaction()
         if getattr(tr, 'finalized', True):