43 files.append(f) |
43 files.append(f) |
44 |
44 |
45 directories.sort() |
45 directories.sort() |
46 |
46 |
47 for f in files: |
47 for f in files: |
48 self._remove_file(f) |
48 if f not in self._repo.dirstate: |
|
49 self._ui.note(_('Removing file %s\n') % f) |
|
50 self._remove(os.remove, f) |
49 |
51 |
50 for f in directories[::-1]: |
52 for f in directories[::-1]: |
51 if not os.listdir(repo.wjoin(f)): |
53 if not os.listdir(repo.wjoin(f)): |
52 self._remove_dir(f) |
54 self._ui.note(_('Removing directory %s\n') % f) |
|
55 self._remove(os.rmdir, f) |
53 |
56 |
54 self._repo = None |
57 self._repo = None |
55 self._ui = None |
58 self._ui = None |
56 |
59 |
57 def _error(self, msg): |
60 def _error(self, msg): |
58 if self._abort_on_err: |
61 if self._abort_on_err: |
59 raise util.Abort(msg) |
62 raise util.Abort(msg) |
60 else: |
63 else: |
61 self._ui.warn(_('warning: %s\n') % msg) |
64 self._ui.warn(_('warning: %s\n') % msg) |
62 |
65 |
63 def _remove_file(self, name): |
66 def _remove(self, remove_func, name): |
64 if name in self._repo.dirstate: |
|
65 return |
|
66 self._ui.note(_('Removing file %s\n') % name) |
|
67 if self._act: |
67 if self._act: |
68 try: |
68 try: |
69 os.remove(self._repo.wjoin(name)) |
69 remove_func(self._repo.wjoin(name)) |
70 except OSError, e: |
|
71 self._error(_('%s cannot be removed') % name) |
|
72 else: |
|
73 self._ui.write('%s%s' % (name, self._eol)) |
|
74 |
|
75 def _remove_dir(self, name): |
|
76 self._ui.note(_('Removing directory %s\n') % name) |
|
77 if self._act: |
|
78 try: |
|
79 os.rmdir(self._repo.wjoin(name)) |
|
80 except OSError, e: |
70 except OSError, e: |
81 self._error(_('%s cannot be removed') % name) |
71 self._error(_('%s cannot be removed') % name) |
82 else: |
72 else: |
83 self._ui.write('%s%s' % (name, self._eol)) |
73 self._ui.write('%s%s' % (name, self._eol)) |
84 |
74 |