diff mercurial/dirstatemap.py @ 50751:0a55206c5a1e

branching: merge stable into default
author Raphaël Gomès <rgomes@octobus.net>
date Thu, 06 Jul 2023 16:07:34 +0200
parents bfbd84c57bda
children d718eddf01d9
line wrap: on
line diff
--- a/mercurial/dirstatemap.py	Thu Jun 22 11:28:17 2023 +0200
+++ b/mercurial/dirstatemap.py	Thu Jul 06 16:07:34 2023 +0200
@@ -4,7 +4,6 @@
 # GNU General Public License version 2 or any later version.
 
 
-import struct
 from .i18n import _
 
 from . import (
@@ -152,15 +151,13 @@
                     b'dirstate only has a docket in v2 format'
                 )
             self._set_identity()
-            try:
+            data = self._readdirstatefile()
+            if data == b'' or data.startswith(docketmod.V2_FORMAT_MARKER):
                 self._docket = docketmod.DirstateDocket.parse(
-                    self._readdirstatefile(), self._nodeconstants
+                    data, self._nodeconstants
                 )
-            except struct.error:
-                self._ui.debug(b"failed to read dirstate-v2 data")
-                raise error.CorruptedDirstate(
-                    b"failed to read dirstate-v2 data"
-                )
+            else:
+                raise error.CorruptedDirstate(b"dirstate is not in v2 format")
         return self._docket
 
     def _read_v2_data(self):