##// END OF EJS Templates
dirstate-v2: actually fix the dirstate-v2 upgrade race...
Arseniy Alekseyev -
r51616:bfbd84c5 stable
parent child Browse files
Show More
@@ -4,7 +4,6 b''
4 # GNU General Public License version 2 or any later version.
4 # GNU General Public License version 2 or any later version.
5
5
6
6
7 import struct
8 from .i18n import _
7 from .i18n import _
9
8
10 from . import (
9 from . import (
@@ -152,15 +151,13 b' class _dirstatemapcommon:'
152 b'dirstate only has a docket in v2 format'
151 b'dirstate only has a docket in v2 format'
153 )
152 )
154 self._set_identity()
153 self._set_identity()
155 try:
154 data = self._readdirstatefile()
155 if data == b'' or data.startswith(docketmod.V2_FORMAT_MARKER):
156 self._docket = docketmod.DirstateDocket.parse(
156 self._docket = docketmod.DirstateDocket.parse(
157 self._readdirstatefile(), self._nodeconstants
157 data, self._nodeconstants
158 )
158 )
159 except struct.error:
159 else:
160 self._ui.debug(b"failed to read dirstate-v2 data")
160 raise error.CorruptedDirstate(b"dirstate is not in v2 format")
161 raise error.CorruptedDirstate(
162 b"failed to read dirstate-v2 data"
163 )
164 return self._docket
161 return self._docket
165
162
166 def _read_v2_data(self):
163 def _read_v2_data(self):
@@ -10,8 +10,8 b' Set up a v1 repo'
10 $ hg init repo
10 $ hg init repo
11 $ cd repo
11 $ cd repo
12 $ echo a > a
12 $ echo a > a
13 $ hg add a
13 $ touch file-with-somewhat-long-name-to-make-dirstate-v1-bigger-than-v2
14 $ hg commit -m a
14 $ hg commit -Aqm a
15 $ hg debugrequires | grep dirstate
15 $ hg debugrequires | grep dirstate
16 [1]
16 [1]
17 $ ls -1 .hg/dirstate*
17 $ ls -1 .hg/dirstate*
General Comments 0
You need to be logged in to leave comments. Login now