rev-branch-cache: issue more truthful "truncating" message
authorPierre-Yves David <pierre-yves.david@octobus.net>
Tue, 24 Sep 2024 00:01:30 +0200
changeset 51902 1eb2317c1762
parent 51901 f0e07efc199f
child 51903 9f7cf869e9f4
rev-branch-cache: issue more truthful "truncating" message First, don't pretend it truncate to 40 when it actually truncate to 0. Second, don't pretend to truncate to 0 when the file is already empty/missing.
mercurial/branching/rev_cache.py
tests/test-branches.t
--- a/mercurial/branching/rev_cache.py	Sun Sep 22 15:55:46 2024 +0200
+++ b/mercurial/branching/rev_cache.py	Tue Sep 24 00:01:30 2024 +0200
@@ -336,14 +336,14 @@
         """write the new revs to revbranchcache"""
         revs = min(len(repo.changelog), len(self._rbcrevs) // _rbcrecsize)
         with repo.cachevfs.open(_rbcrevs, b'ab') as f:
-            if f.tell() != start:
-                repo.ui.debug(
-                    b"truncating cache/%s to %d\n" % (_rbcrevs, start)
-                )
+            current_size = f.tell()
+            if current_size < start:
+                start = 0
+            if current_size != start:
+                msg = b"truncating cache/%s to %d\n"
+                msg %= (_rbcrevs, start)
+                repo.ui.debug(msg)
                 f.seek(start)
-                if f.tell() != start:
-                    start = 0
-                    f.seek(start)
                 f.truncate()
             end = revs * _rbcrecsize
             f.write(self._rbcrevs.slice(start, end))
--- a/tests/test-branches.t	Sun Sep 22 15:55:46 2024 +0200
+++ b/tests/test-branches.t	Tue Sep 24 00:01:30 2024 +0200
@@ -905,7 +905,7 @@
   $ echo > .hg/cache/rbc-names-v1
   $ hg log -r '5:&branch(.)' -T '{rev} ' --debug
   referenced branch names not found - rebuilding revision branch cache from scratch
-  8 9 10 11 12 13 truncating cache/rbc-revs-v1 to 40
+  8 9 10 11 12 13  (no-eol)
   $ f --size .hg/cache/rbc-names-*
   .hg/cache/rbc-names-v1: size=84
   $ grep "i-will-regret-this" .hg/cache/rbc-names-* > /dev/null