Mercurial > hg
comparison mercurial/dirstate.py @ 34675:c6ef9a2498a5
dirstate: move identity to dirstatemap
Moving the identity function to the dirstatemap class will allow alternative
dirstate implementations to replace the implementation.
Differential Revision: https://phab.mercurial-scm.org/D980
author | Durham Goode <durham@fb.com> |
---|---|
date | Thu, 05 Oct 2017 11:34:41 -0700 |
parents | 60927b19ed65 |
children | bfddc3d678ae |
comparison
equal
deleted
inserted
replaced
34674:60927b19ed65 | 34675:c6ef9a2498a5 |
---|---|
131 (state, mode, size, time).''' | 131 (state, mode, size, time).''' |
132 self._read() | 132 self._read() |
133 return self._map | 133 return self._map |
134 | 134 |
135 @propertycache | 135 @propertycache |
136 def _identity(self): | |
137 self._read() | |
138 return self._identity | |
139 | |
140 @propertycache | |
141 def _filefoldmap(self): | 136 def _filefoldmap(self): |
142 return self._map.filefoldmap() | 137 return self._map.filefoldmap() |
143 | 138 |
144 @propertycache | 139 @propertycache |
145 def _dirfoldmap(self): | 140 def _dirfoldmap(self): |
373 except: # re-raises | 368 except: # re-raises |
374 f.discard() | 369 f.discard() |
375 raise | 370 raise |
376 | 371 |
377 def _read(self): | 372 def _read(self): |
378 # ignore HG_PENDING because identity is used only for writing | |
379 self._identity = util.filestat.frompath( | |
380 self._opener.join(self._filename)) | |
381 self._map = dirstatemap(self._ui, self._opener, self._root) | 373 self._map = dirstatemap(self._ui, self._opener, self._root) |
382 self._map.read() | 374 self._map.read() |
383 | 375 |
384 def invalidate(self): | 376 def invalidate(self): |
385 '''Causes the next access to reread the dirstate. | 377 '''Causes the next access to reread the dirstate. |
386 | 378 |
387 This is different from localrepo.invalidatedirstate() because it always | 379 This is different from localrepo.invalidatedirstate() because it always |
388 rereads the dirstate. Use localrepo.invalidatedirstate() if you want to | 380 rereads the dirstate. Use localrepo.invalidatedirstate() if you want to |
389 check whether the dirstate has changed before rereading it.''' | 381 check whether the dirstate has changed before rereading it.''' |
390 | 382 |
391 for a in ("_map", "_identity", | 383 for a in ("_map", "_filefoldmap", "_dirfoldmap", "_branch", |
392 "_filefoldmap", "_dirfoldmap", "_branch", | |
393 "_dirs", "_ignore"): | 384 "_dirs", "_ignore"): |
394 if a in self.__dict__: | 385 if a in self.__dict__: |
395 delattr(self, a) | 386 delattr(self, a) |
396 self._lastnormaltime = 0 | 387 self._lastnormaltime = 0 |
397 self._dirty = False | 388 self._dirty = False |
650 '''Return identity of dirstate itself to detect changing in storage | 641 '''Return identity of dirstate itself to detect changing in storage |
651 | 642 |
652 If identity of previous dirstate is equal to this, writing | 643 If identity of previous dirstate is equal to this, writing |
653 changes based on the former dirstate out can keep consistency. | 644 changes based on the former dirstate out can keep consistency. |
654 ''' | 645 ''' |
655 return self._identity | 646 return self._map.identity |
656 | 647 |
657 def write(self, tr): | 648 def write(self, tr): |
658 if not self._dirty: | 649 if not self._dirty: |
659 return | 650 return |
660 | 651 |
1340 def setparents(self, p1, p2): | 1331 def setparents(self, p1, p2): |
1341 self._parents = (p1, p2) | 1332 self._parents = (p1, p2) |
1342 self._dirtyparents = True | 1333 self._dirtyparents = True |
1343 | 1334 |
1344 def read(self): | 1335 def read(self): |
1336 # ignore HG_PENDING because identity is used only for writing | |
1337 self.identity = util.filestat.frompath( | |
1338 self._opener.join(self._filename)) | |
1339 | |
1345 try: | 1340 try: |
1346 fp = self._opendirstatefile() | 1341 fp = self._opendirstatefile() |
1347 try: | 1342 try: |
1348 st = fp.read() | 1343 st = fp.read() |
1349 finally: | 1344 finally: |
1402 def otherparentset(self): | 1397 def otherparentset(self): |
1403 nonnorm, otherparents = self.nonnormalentries() | 1398 nonnorm, otherparents = self.nonnormalentries() |
1404 self.nonnormalset = nonnorm | 1399 self.nonnormalset = nonnorm |
1405 return otherparents | 1400 return otherparents |
1406 | 1401 |
1402 @propertycache | |
1403 def identity(self): | |
1404 self.read() | |
1405 return self.identity | |
1406 |