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 |
|
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 |
|
|
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 |
|
|
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