2195 after, force = opts.get('after'), opts.get('force') |
2195 after, force = opts.get('after'), opts.get('force') |
2196 if not pats and not after: |
2196 if not pats and not after: |
2197 raise util.Abort(_('no files specified')) |
2197 raise util.Abort(_('no files specified')) |
2198 |
2198 |
2199 m = cmdutil.match(repo, pats, opts) |
2199 m = cmdutil.match(repo, pats, opts) |
2200 mardu = map(dict.fromkeys, repo.status(match=m, unknown=True))[:5] |
2200 s = repo.status(match=m, clean=True) |
2201 modified, added, removed, deleted, unknown = mardu |
2201 modified, added, deleted, clean = s[0], s[1], s[3], s[6] |
2202 |
2202 |
2203 remove, forget = [], [] |
2203 def warn(files, reason): |
2204 for abs in repo.walk(m): |
2204 for f in files: |
2205 |
2205 ui.warn(_('not removing %s: file %s (use -f to force removal)\n') |
2206 reason = None |
2206 % (m.rel(f), reason)) |
2207 if abs in removed or abs in unknown: |
2207 |
2208 continue |
2208 if force: |
2209 |
2209 remove, forget = modified + deleted + clean, added |
2210 # last column |
2210 elif after: |
2211 elif abs in deleted: |
2211 remove, forget = deleted, [] |
2212 remove.append(abs) |
2212 warn(modified + added + clean, _('still exists')) |
2213 |
2213 else: |
2214 # rest of the third row |
2214 remove, forget = deleted + clean, [] |
2215 elif after and not force: |
2215 warn(modified, _('is modified')) |
2216 reason = _('still exists (use -f to force removal)') |
2216 warn(added, _('has been marked for add')) |
2217 |
2217 |
2218 # rest of the first column |
2218 files = remove + forget |
2219 elif abs in added: |
2219 files.sort() |
2220 if not force: |
2220 for f in files: |
2221 reason = _('has been marked for add (use -f to force removal)') |
2221 if ui.verbose or not m.exact(f): |
2222 else: |
2222 ui.status(_('removing %s\n') % m.rel(f)) |
2223 forget.append(abs) |
|
2224 |
|
2225 # rest of the third column |
|
2226 elif abs in modified: |
|
2227 if not force: |
|
2228 reason = _('is modified (use -f to force removal)') |
|
2229 else: |
|
2230 remove.append(abs) |
|
2231 |
|
2232 # rest of the second column |
|
2233 elif not reason: |
|
2234 remove.append(abs) |
|
2235 |
|
2236 if reason: |
|
2237 ui.warn(_('not removing %s: file %s\n') % (m.rel(abs), reason)) |
|
2238 elif ui.verbose or not m.exact(abs): |
|
2239 ui.status(_('removing %s\n') % m.rel(abs)) |
|
2240 |
2223 |
2241 repo.forget(forget) |
2224 repo.forget(forget) |
2242 repo.remove(remove, unlink=not after) |
2225 repo.remove(remove, unlink=not after) |
2243 |
2226 |
2244 def rename(ui, repo, *pats, **opts): |
2227 def rename(ui, repo, *pats, **opts): |