[PATCH 4 of 6] scmutil.addremove: factor out code to mark added/removed/renames

Siddharth Agarwal sid0 at fb.com
Mon May 6 19:12:30 CDT 2013


# HG changeset patch
# User Siddharth Agarwal <sid0 at fb.com>
# Date 1365029639 25200
#      Wed Apr 03 15:53:59 2013 -0700
# Node ID 3f123b5d113d0b2626c74678aa0b6fe994a8883d
# Parent  bc4a797e7206ac8180f20cebf6a3c0ea927e127d
scmutil.addremove: factor out code to mark added/removed/renames

An upcoming patch will reuse this code in another function.

diff -r bc4a797e7206 -r 3f123b5d113d mercurial/scmutil.py
--- 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 @@ def addremove(repo, pats=[], opts={}, dr
                            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 @@ def _findrenames(repo, matcher, added, r
             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.


More information about the Mercurial-devel mailing list