1439 return True |
1439 return True |
1440 for src, abs, rel, exact in walk(repo, (pat,) + pats, opts): |
1440 for src, abs, rel, exact in walk(repo, (pat,) + pats, opts): |
1441 if okaytoremove(abs, rel, exact): |
1441 if okaytoremove(abs, rel, exact): |
1442 if ui.verbose or not exact: ui.status(_('removing %s\n') % rel) |
1442 if ui.verbose or not exact: ui.status(_('removing %s\n') % rel) |
1443 names.append(abs) |
1443 names.append(abs) |
1444 for name in names: |
1444 repo.remove(names, unlink=True) |
1445 try: |
|
1446 os.unlink(name) |
|
1447 except OSError, inst: |
|
1448 if inst.errno != errno.ENOENT: raise |
|
1449 repo.remove(names) |
|
1450 |
1445 |
1451 def rename(ui, repo, *pats, **opts): |
1446 def rename(ui, repo, *pats, **opts): |
1452 """rename files; equivalent of copy + remove""" |
1447 """rename files; equivalent of copy + remove""" |
1453 errs, copied = docopy(ui, repo, pats, opts) |
1448 errs, copied = docopy(ui, repo, pats, opts) |
1454 names = [] |
1449 names = [] |
1455 for abs, rel, exact in copied: |
1450 for abs, rel, exact in copied: |
1456 if ui.verbose or not exact: ui.status(_('removing %s\n') % rel) |
1451 if ui.verbose or not exact: ui.status(_('removing %s\n') % rel) |
1457 try: |
|
1458 os.unlink(rel) |
|
1459 except OSError, inst: |
|
1460 if inst.errno != errno.ENOENT: raise |
|
1461 names.append(abs) |
1452 names.append(abs) |
1462 repo.remove(names) |
1453 repo.remove(names, unlink=True) |
1463 return errs |
1454 return errs |
1464 |
1455 |
1465 def revert(ui, repo, *names, **opts): |
1456 def revert(ui, repo, *names, **opts): |
1466 """revert modified files or dirs back to their unmodified states""" |
1457 """revert modified files or dirs back to their unmodified states""" |
1467 node = opts['rev'] and repo.lookup(opts['rev']) or \ |
1458 node = opts['rev'] and repo.lookup(opts['rev']) or \ |