--- a/mercurial/dirstate.py Tue Sep 26 03:56:20 2017 -0700
+++ b/mercurial/dirstate.py Tue Sep 26 03:56:20 2017 -0700
@@ -137,11 +137,6 @@
return self._map
@propertycache
- def _copymap(self):
- self._read()
- return self._copymap
-
- @propertycache
def _identity(self):
self._read()
return self._identity
@@ -378,13 +373,13 @@
# Discard 'm' markers when moving away from a merge state
if s[0] == 'm':
- source = self._copymap.get(f)
+ source = self._map.copymap.get(f)
if source:
copies[f] = source
self.normallookup(f)
# Also fix up otherparent markers
elif s[0] == 'n' and s[2] == -2:
- source = self._copymap.get(f)
+ source = self._map.copymap.get(f)
if source:
copies[f] = source
self.add(f)
@@ -418,7 +413,6 @@
def _read(self):
self._map = dirstatemap()
- self._copymap = {}
# ignore HG_PENDING because identity is used only for writing
self._identity = util.filestat.frompath(
self._opener.join(self._filename))
@@ -461,7 +455,7 @@
#
# (we cannot decorate the function directly since it is in a C module)
parse_dirstate = util.nogc(parsers.parse_dirstate)
- p = parse_dirstate(self._map._map, self._copymap, st)
+ p = parse_dirstate(self._map._map, self._map.copymap, st)
if not self._dirtypl:
self._pl = p
@@ -472,7 +466,7 @@
rereads the dirstate. Use localrepo.invalidatedirstate() if you want to
check whether the dirstate has changed before rereading it.'''
- for a in ("_map", "_copymap", "_identity",
+ for a in ("_map", "_identity",
"_filefoldmap", "_dirfoldmap", "_branch",
"_pl", "_dirs", "_ignore", "_nonnormalset",
"_otherparentset"):
@@ -490,17 +484,17 @@
return
self._dirty = True
if source is not None:
- self._copymap[dest] = source
+ self._map.copymap[dest] = source
self._updatedfiles.add(source)
self._updatedfiles.add(dest)
- elif self._copymap.pop(dest, None):
+ elif self._map.copymap.pop(dest, None):
self._updatedfiles.add(dest)
def copied(self, file):
- return self._copymap.get(file, None)
+ return self._map.copymap.get(file, None)
def copies(self):
- return self._copymap
+ return self._map.copymap
def _droppath(self, f):
if self[f] not in "?r" and "_dirs" in self.__dict__:
@@ -543,7 +537,7 @@
mtime = s.st_mtime
self._addpath(f, 'n', s.st_mode,
s.st_size & _rangemask, mtime & _rangemask)
- self._copymap.pop(f, None)
+ self._map.copymap.pop(f, None)
if f in self._nonnormalset:
self._nonnormalset.remove(f)
if mtime > self._lastnormaltime:
@@ -561,7 +555,7 @@
entry = self._map.get(f)
if entry is not None:
if entry[0] == 'r' and entry[2] in (-1, -2):
- source = self._copymap.get(f)
+ source = self._map.copymap.get(f)
if entry[2] == -1:
self.merge(f)
elif entry[2] == -2:
@@ -572,7 +566,7 @@
if entry[0] == 'm' or entry[0] == 'n' and entry[2] == -2:
return
self._addpath(f, 'n', 0, -1, -1)
- self._copymap.pop(f, None)
+ self._map.copymap.pop(f, None)
if f in self._nonnormalset:
self._nonnormalset.remove(f)
@@ -587,12 +581,12 @@
else:
# add-like
self._addpath(f, 'n', 0, -2, -1)
- self._copymap.pop(f, None)
+ self._map.copymap.pop(f, None)
def add(self, f):
'''Mark a file added.'''
self._addpath(f, 'a', 0, -1, -1)
- self._copymap.pop(f, None)
+ self._map.copymap.pop(f, None)
def remove(self, f):
'''Mark a file removed.'''
@@ -611,7 +605,7 @@
self._map[f] = dirstatetuple('r', 0, size, 0)
self._nonnormalset.add(f)
if size == 0:
- self._copymap.pop(f, None)
+ self._map.copymap.pop(f, None)
def merge(self, f):
'''Mark a file merged.'''
@@ -627,7 +621,7 @@
del self._map[f]
if f in self._nonnormalset:
self._nonnormalset.remove(f)
- self._copymap.pop(f, None)
+ self._map.copymap.pop(f, None)
def _discoverpath(self, path, normed, ignoremissing, exists, storemap):
if exists is None:
@@ -709,7 +703,6 @@
self._otherparentset = set()
if "_dirs" in self.__dict__:
delattr(self, "_dirs")
- self._copymap = {}
self._pl = [nullid, nullid]
self._lastnormaltime = 0
self._updatedfiles.clear()
@@ -813,8 +806,8 @@
now = end # trust our estimate that the end is near now
break
- st.write(parsers.pack_dirstate(self._map._map, self._copymap, self._pl,
- now))
+ st.write(parsers.pack_dirstate(self._map._map, self._map.copymap,
+ self._pl, now))
self._nonnormalset, self._otherparentset = self._map.nonnormalentries()
st.close()
self._lastnormaltime = 0
@@ -1188,7 +1181,7 @@
mexact = match.exact
dirignore = self._dirignore
checkexec = self._checkexec
- copymap = self._copymap
+ copymap = self._map.copymap
lastnormaltime = self._lastnormaltime
# We need to do full walks when either
@@ -1317,6 +1310,7 @@
class dirstatemap(object):
def __init__(self):
self._map = {}
+ self.copymap = {}
def iteritems(self):
return self._map.iteritems()