scmutil.addremove: factor out code to mark added/removed/renames
An upcoming patch will reuse this code in another function.
--- a/mercurial/scmutil.py Wed Apr 03 16:32:41 2013 -0700
+++ b/mercurial/scmutil.py Wed Apr 03 15:53:59 2013 -0700
@@ -707,15 +707,7 @@
similarity)
if not dry_run:
- wctx = repo[None]
- wlock = repo.wlock()
- try:
- wctx.forget(deleted)
- wctx.add(unknown)
- for new, old in renames.iteritems():
- wctx.copy(old, new)
- finally:
- wlock.release()
+ _markchanges(repo, unknown, deleted, renames)
for f in rejected:
if f in m.files():
@@ -763,6 +755,19 @@
renames[new] = old
return renames
+def _markchanges(repo, unknown, deleted, renames):
+ '''Marks the files in unknown as added, the files in deleted as removed,
+ and the files in renames as copied.'''
+ wctx = repo[None]
+ wlock = repo.wlock()
+ try:
+ wctx.forget(deleted)
+ wctx.add(unknown)
+ for new, old in renames.iteritems():
+ wctx.copy(old, new)
+ finally:
+ wlock.release()
+
def dirstatecopy(ui, repo, wctx, src, dst, dryrun=False, cwd=None):
"""Update the dirstate to reflect the intent of copying src to dst. For
different reasons it might not end with dst being marked as copied from src.