##// 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 375 @propertycache
376 376 def _dirs(self):
377 dirs = set()
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
377 return scmutil.dirs(self._manifest)
387 378
388 379 def dirs(self):
389 380 return self._dirs
@@ -1155,7 +1146,7 b' class workingctx(changectx):'
1155 1146 self._repo.dirstate.setparents(node)
1156 1147
1157 1148 def dirs(self):
1158 return set(self._repo.dirstate.dirs())
1149 return self._repo.dirstate.dirs()
1159 1150
1160 1151 class workingfilectx(filectx):
1161 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 336 # generate a directory move map
337 337 d1, d2 = c1.dirs(), c2.dirs()
338 d1.add('')
339 d2.add('')
338 d1.addpath('/')
339 d2.addpath('/')
340 340 invalid = set()
341 341 dirmove = {}
342 342
@@ -25,20 +25,6 b' class rootcache(filecache):'
25 25 def join(self, obj, fname):
26 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 28 class dirstate(object):
43 29
44 30 def __init__(self, opener, ui, root, validate):
@@ -107,11 +93,7 b' class dirstate(object):'
107 93
108 94 @propertycache
109 95 def _dirs(self):
110 dirs = {}
111 for f, s in self._map.iteritems():
112 if s[0] != 'r':
113 _incdirs(dirs, f)
114 return dirs
96 return scmutil.dirs(self._map, 'r')
115 97
116 98 def dirs(self):
117 99 return self._dirs
@@ -331,7 +313,7 b' class dirstate(object):'
331 313
332 314 def _droppath(self, f):
333 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 318 def _addpath(self, f, state, mode, size, mtime):
337 319 oldstate = self[f]
@@ -347,7 +329,7 b' class dirstate(object):'
347 329 raise util.Abort(
348 330 _('file %r in dirstate clashes with %r') % (d, f))
349 331 if oldstate in "?r" and "_dirs" in self.__dict__:
350 _incdirs(self._dirs, f)
332 self._dirs.addpath(f)
351 333 self._dirty = True
352 334 self._map[f] = (state, mode, size, mtime)
353 335
General Comments 0
You need to be logged in to leave comments. Login now