##// END OF EJS Templates
Make the purge extension use the statwalk walker from the dirstate object
Emanuele Aina -
r4147:691f9168 default
parent child Browse files
Show More
@@ -35,22 +35,24 b' class Purge(object):'
35 self._ui = ui
35 self._ui = ui
36 self._hg_root = self._split_path(repo.root)
36 self._hg_root = self._split_path(repo.root)
37
37
38 if not dirs:
38 directories = []
39 dirs = [repo.root]
39 files = []
40 for src, f, st in repo.dirstate.statwalk(files=dirs, ignored=True,
41 directories=True):
42 if src == 'd':
43 directories.append(f)
44 elif src == 'f' and f not in repo.dirstate:
45 files.append(f)
40
46
41 for path in dirs:
47 directories.sort()
42 path = os.path.abspath(path)
48
43 for root, dirs, files in os.walk(path, topdown=False):
49 for f in files:
44 if '.hg' in self._split_path(root):
50 self._remove_file(os.path.join(repo.root, f))
45 # Skip files in the .hg directory.
51
46 # Note that if the repository is in a directory
52 for f in directories[::-1]:
47 # called .hg this command does not work.
53 f = os.path.join(repo.root, f)
48 continue
54 if not os.listdir(f):
49 for name in files:
55 self._remove_dir(f)
50 self._remove_file(os.path.join(root, name))
51 if not os.listdir(root):
52 # Remove this directory if it is empty.
53 self._remove_dir(root)
54
56
55 self._repo = None
57 self._repo = None
56 self._ui = None
58 self._ui = None
General Comments 0
You need to be logged in to leave comments. Login now