354 # for finding renames |
354 # for finding renames |
355 elif repo.dirstate[abs] == 'r': |
355 elif repo.dirstate[abs] == 'r': |
356 removed.append(abs) |
356 removed.append(abs) |
357 elif repo.dirstate[abs] == 'a': |
357 elif repo.dirstate[abs] == 'a': |
358 added.append(abs) |
358 added.append(abs) |
359 if not dry_run: |
359 copies = {} |
360 repo.remove(deleted) |
|
361 repo.add(unknown) |
|
362 if similarity > 0: |
360 if similarity > 0: |
363 for old, new, score in findrenames(repo, added + unknown, |
361 for old, new, score in findrenames(repo, added + unknown, |
364 removed + deleted, similarity): |
362 removed + deleted, similarity): |
365 if repo.ui.verbose or not m.exact(old) or not m.exact(new): |
363 if repo.ui.verbose or not m.exact(old) or not m.exact(new): |
366 repo.ui.status(_('recording removal of %s as rename to %s ' |
364 repo.ui.status(_('recording removal of %s as rename to %s ' |
367 '(%d%% similar)\n') % |
365 '(%d%% similar)\n') % |
368 (m.rel(old), m.rel(new), score * 100)) |
366 (m.rel(old), m.rel(new), score * 100)) |
369 if not dry_run: |
367 copies[new] = old |
|
368 |
|
369 if not dry_run: |
|
370 wlock = repo.wlock() |
|
371 try: |
|
372 repo.remove(deleted) |
|
373 repo.add(unknown) |
|
374 for new, old in copies.iteritems(): |
370 repo.copy(old, new) |
375 repo.copy(old, new) |
|
376 finally: |
|
377 wlock.release() |
371 |
378 |
372 def copy(ui, repo, pats, opts, rename=False): |
379 def copy(ui, repo, pats, opts, rename=False): |
373 # called with the repo lock held |
380 # called with the repo lock held |
374 # |
381 # |
375 # hgsep => pathname that uses "/" to separate directories |
382 # hgsep => pathname that uses "/" to separate directories |