##// END OF EJS Templates
scmutil: use new dirs class in dirstate and context...
Bryan O'Sullivan -
r18899:d8ff607e default
parent child Browse files
Show More
@@ -374,16 +374,7 b' class changectx(object):'
374
374
375 @propertycache
375 @propertycache
376 def _dirs(self):
376 def _dirs(self):
377 dirs = set()
377 return scmutil.dirs(self._manifest)
378 for f in self._manifest:
379 pos = f.rfind('/')
380 while pos != -1:
381 f = f[:pos]
382 if f in dirs:
383 break # dirs already contains this and above
384 dirs.add(f)
385 pos = f.rfind('/')
386 return dirs
387
378
388 def dirs(self):
379 def dirs(self):
389 return self._dirs
380 return self._dirs
@@ -1155,7 +1146,7 b' class workingctx(changectx):'
1155 self._repo.dirstate.setparents(node)
1146 self._repo.dirstate.setparents(node)
1156
1147
1157 def dirs(self):
1148 def dirs(self):
1158 return set(self._repo.dirstate.dirs())
1149 return self._repo.dirstate.dirs()
1159
1150
1160 class workingfilectx(filectx):
1151 class workingfilectx(filectx):
1161 """A workingfilectx object makes access to data related to a particular
1152 """A workingfilectx object makes access to data related to a particular
@@ -335,8 +335,8 b' def mergecopies(repo, c1, c2, ca):'
335
335
336 # generate a directory move map
336 # generate a directory move map
337 d1, d2 = c1.dirs(), c2.dirs()
337 d1, d2 = c1.dirs(), c2.dirs()
338 d1.add('')
338 d1.addpath('/')
339 d2.add('')
339 d2.addpath('/')
340 invalid = set()
340 invalid = set()
341 dirmove = {}
341 dirmove = {}
342
342
@@ -25,20 +25,6 b' class rootcache(filecache):'
25 def join(self, obj, fname):
25 def join(self, obj, fname):
26 return obj._join(fname)
26 return obj._join(fname)
27
27
28 def _incdirs(dirs, path):
29 for base in scmutil.finddirs(path):
30 if base in dirs:
31 dirs[base] += 1
32 return
33 dirs[base] = 1
34
35 def _decdirs(dirs, path):
36 for base in scmutil.finddirs(path):
37 if dirs[base] > 1:
38 dirs[base] -= 1
39 return
40 del dirs[base]
41
42 class dirstate(object):
28 class dirstate(object):
43
29
44 def __init__(self, opener, ui, root, validate):
30 def __init__(self, opener, ui, root, validate):
@@ -107,11 +93,7 b' class dirstate(object):'
107
93
108 @propertycache
94 @propertycache
109 def _dirs(self):
95 def _dirs(self):
110 dirs = {}
96 return scmutil.dirs(self._map, 'r')
111 for f, s in self._map.iteritems():
112 if s[0] != 'r':
113 _incdirs(dirs, f)
114 return dirs
115
97
116 def dirs(self):
98 def dirs(self):
117 return self._dirs
99 return self._dirs
@@ -331,7 +313,7 b' class dirstate(object):'
331
313
332 def _droppath(self, f):
314 def _droppath(self, f):
333 if self[f] not in "?r" and "_dirs" in self.__dict__:
315 if self[f] not in "?r" and "_dirs" in self.__dict__:
334 _decdirs(self._dirs, f)
316 self._dirs.delpath(f)
335
317
336 def _addpath(self, f, state, mode, size, mtime):
318 def _addpath(self, f, state, mode, size, mtime):
337 oldstate = self[f]
319 oldstate = self[f]
@@ -347,7 +329,7 b' class dirstate(object):'
347 raise util.Abort(
329 raise util.Abort(
348 _('file %r in dirstate clashes with %r') % (d, f))
330 _('file %r in dirstate clashes with %r') % (d, f))
349 if oldstate in "?r" and "_dirs" in self.__dict__:
331 if oldstate in "?r" and "_dirs" in self.__dict__:
350 _incdirs(self._dirs, f)
332 self._dirs.addpath(f)
351 self._dirty = True
333 self._dirty = True
352 self._map[f] = (state, mode, size, mtime)
334 self._map[f] = (state, mode, size, mtime)
353
335
General Comments 0
You need to be logged in to leave comments. Login now