D1313: dirstate: gate access to self._map.dirs
mbolin (Michael Bolin)
phabricator at mercurial-scm.org
Fri Nov 3 22:59:43 UTC 2017
mbolin created this revision.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.
REVISION SUMMARY
`_droppath()` already checks `"dirs" in self._map.__dict__` before accessing
`self._map.dirs`. This updates `_addpath()` to be equally cautious.
REPOSITORY
rHG Mercurial
REVISION DETAIL
https://phab.mercurial-scm.org/D1313
AFFECTED FILES
mercurial/dirstate.py
CHANGE DETAILS
diff --git a/mercurial/dirstate.py b/mercurial/dirstate.py
--- a/mercurial/dirstate.py
+++ b/mercurial/dirstate.py
@@ -388,7 +388,7 @@
return self._map.copymap
def _droppath(self, f):
- if self[f] not in "?r" and "dirs" in self._map.__dict__:
+ if "dirs" in self._map.__dict__ and self[f] not in "?r":
self._map.dirs.delpath(f)
if "filefoldmap" in self._map.__dict__:
@@ -402,16 +402,17 @@
oldstate = self[f]
if state == 'a' or oldstate == 'r':
scmutil.checkfilename(f)
- if f in self._map.dirs:
- raise error.Abort(_('directory %r already in dirstate') % f)
- # shadows
- for d in util.finddirs(f):
- if d in self._map.dirs:
- break
- entry = self._map.get(d)
- if entry is not None and entry[0] != 'r':
- raise error.Abort(
- _('file %r in dirstate clashes with %r') % (d, f))
+ if "dirs" in self._map.__dict__:
+ if f in self._map.dirs:
+ raise error.Abort(_('directory %r already in dirstate') % f)
+ # shadows
+ for d in util.finddirs(f):
+ if d in self._map.dirs:
+ break
+ entry = self._map.get(d)
+ if entry is not None and entry[0] != 'r':
+ raise error.Abort(
+ _('file %r in dirstate clashes with %r') % (d, f))
if oldstate in "?r" and "dirs" in self._map.__dict__:
self._map.dirs.addpath(f)
self._dirty = True
To: mbolin, #hg-reviewers
Cc: mercurial-devel
More information about the Mercurial-devel
mailing list