2416 warnings = [] |
2416 warnings = [] |
2417 warn = True |
2417 warn = True |
2418 else: |
2418 else: |
2419 warn = False |
2419 warn = False |
2420 |
2420 |
2421 for subpath in sorted(wctx.substate): |
2421 subs = sorted(wctx.substate) |
|
2422 total = len(subs) |
|
2423 count = 0 |
|
2424 for subpath in subs: |
2422 def matchessubrepo(matcher, subpath): |
2425 def matchessubrepo(matcher, subpath): |
2423 if matcher.exact(subpath): |
2426 if matcher.exact(subpath): |
2424 return True |
2427 return True |
2425 for f in matcher.files(): |
2428 for f in matcher.files(): |
2426 if f.startswith(subpath): |
2429 if f.startswith(subpath): |
2427 return True |
2430 return True |
2428 return False |
2431 return False |
2429 |
2432 |
|
2433 count += 1 |
2430 if subrepos or matchessubrepo(m, subpath): |
2434 if subrepos or matchessubrepo(m, subpath): |
|
2435 ui.progress(_('searching'), count, total=total, unit=_('subrepos')) |
|
2436 |
2431 sub = wctx.sub(subpath) |
2437 sub = wctx.sub(subpath) |
2432 try: |
2438 try: |
2433 submatch = matchmod.subdirmatcher(subpath, m) |
2439 submatch = matchmod.subdirmatcher(subpath, m) |
2434 if sub.removefiles(submatch, prefix, after, force, subrepos, |
2440 if sub.removefiles(submatch, prefix, after, force, subrepos, |
2435 warnings): |
2441 warnings): |
2436 ret = 1 |
2442 ret = 1 |
2437 except error.LookupError: |
2443 except error.LookupError: |
2438 warnings.append(_("skipping missing subrepository: %s\n") |
2444 warnings.append(_("skipping missing subrepository: %s\n") |
2439 % join(subpath)) |
2445 % join(subpath)) |
|
2446 ui.progress(_('searching'), None) |
2440 |
2447 |
2441 # warn about failure to delete explicit files/dirs |
2448 # warn about failure to delete explicit files/dirs |
2442 deleteddirs = util.dirs(deleted) |
2449 deleteddirs = util.dirs(deleted) |
2443 for f in m.files(): |
2450 files = m.files() |
|
2451 total = len(files) |
|
2452 count = 0 |
|
2453 for f in files: |
2444 def insubrepo(): |
2454 def insubrepo(): |
2445 for subpath in wctx.substate: |
2455 for subpath in wctx.substate: |
2446 if f.startswith(subpath): |
2456 if f.startswith(subpath): |
2447 return True |
2457 return True |
2448 return False |
2458 return False |
2449 |
2459 |
|
2460 count += 1 |
|
2461 ui.progress(_('deleting'), count, total=total, unit=_('files')) |
2450 isdir = f in deleteddirs or wctx.hasdir(f) |
2462 isdir = f in deleteddirs or wctx.hasdir(f) |
2451 if f in repo.dirstate or isdir or f == '.' or insubrepo(): |
2463 if f in repo.dirstate or isdir or f == '.' or insubrepo(): |
2452 continue |
2464 continue |
2453 |
2465 |
2454 if repo.wvfs.exists(f): |
2466 if repo.wvfs.exists(f): |
2458 else: |
2470 else: |
2459 warnings.append(_('not removing %s: file is untracked\n') |
2471 warnings.append(_('not removing %s: file is untracked\n') |
2460 % m.rel(f)) |
2472 % m.rel(f)) |
2461 # missing files will generate a warning elsewhere |
2473 # missing files will generate a warning elsewhere |
2462 ret = 1 |
2474 ret = 1 |
|
2475 ui.progress(_('deleting'), None) |
2463 |
2476 |
2464 if force: |
2477 if force: |
2465 list = modified + deleted + clean + added |
2478 list = modified + deleted + clean + added |
2466 elif after: |
2479 elif after: |
2467 list = deleted |
2480 list = deleted |
2468 for f in modified + added + clean: |
2481 remaining = modified + added + clean |
2469 warnings.append(_('not removing %s: file still exists\n') % m.rel(f)) |
2482 total = len(remaining) |
|
2483 count = 0 |
|
2484 for f in remaining: |
|
2485 count += 1 |
|
2486 ui.progress(_('skipping'), count, total=total, unit=_('files')) |
|
2487 warnings.append(_('not removing %s: file still exists\n') |
|
2488 % m.rel(f)) |
2470 ret = 1 |
2489 ret = 1 |
|
2490 ui.progress(_('skipping'), None) |
2471 else: |
2491 else: |
2472 list = deleted + clean |
2492 list = deleted + clean |
|
2493 total = len(modified) + len(added) |
|
2494 count = 0 |
2473 for f in modified: |
2495 for f in modified: |
|
2496 count += 1 |
|
2497 ui.progress(_('skipping'), count, total=total, unit=_('files')) |
2474 warnings.append(_('not removing %s: file is modified (use -f' |
2498 warnings.append(_('not removing %s: file is modified (use -f' |
2475 ' to force removal)\n') % m.rel(f)) |
2499 ' to force removal)\n') % m.rel(f)) |
2476 ret = 1 |
2500 ret = 1 |
2477 for f in added: |
2501 for f in added: |
|
2502 count += 1 |
|
2503 ui.progress(_('skipping'), count, total=total, unit=_('files')) |
2478 warnings.append(_('not removing %s: file has been marked for add' |
2504 warnings.append(_('not removing %s: file has been marked for add' |
2479 ' (use forget to undo)\n') % m.rel(f)) |
2505 ' (use forget to undo)\n') % m.rel(f)) |
2480 ret = 1 |
2506 ret = 1 |
2481 |
2507 ui.progress(_('skipping'), None) |
2482 for f in sorted(list): |
2508 |
|
2509 list = sorted(list) |
|
2510 total = len(list) |
|
2511 count = 0 |
|
2512 for f in list: |
|
2513 count += 1 |
2483 if ui.verbose or not m.exact(f): |
2514 if ui.verbose or not m.exact(f): |
|
2515 ui.progress(_('deleting'), count, total=total, unit=_('files')) |
2484 ui.status(_('removing %s\n') % m.rel(f)) |
2516 ui.status(_('removing %s\n') % m.rel(f)) |
|
2517 ui.progress(_('deleting'), None) |
2485 |
2518 |
2486 with repo.wlock(): |
2519 with repo.wlock(): |
2487 if not after: |
2520 if not after: |
2488 for f in list: |
2521 for f in list: |
2489 if f in added: |
2522 if f in added: |