Patchwork D8884: merge: rework iteration over mergeresult object in checkpathconflicts()

login
register
mail settings
Submitter phabricator
Date Aug. 5, 2020, 8:53 a.m.
Message ID <differential-rev-PHID-DREV-t3pkonp2g2nvln43maht-req@mercurial-scm.org>
Download mbox | patch
Permalink /patch/46982/
State Superseded
Headers show

Comments

phabricator - Aug. 5, 2020, 8:53 a.m.
pulkit created this revision.
Herald added a reviewer: hg-reviewers.
Herald added a subscriber: mercurial-patches.

REVISION SUMMARY
  Instead of following pattern:
  
    for f, (m, args, msg) in mresult.actions.items():
    
        if m == mergestatemod.ACTION_*:
            ...
        elif m == mergestatemod.ACTION_*:
            ...
        ....
  
  We do:
  
    for (f, args, msg) in mresult.getaction((mergestatemod.ACTION_*,)):
        ...
    
    for (f, args, msg) in mresult.getaction((mergestatemod.ACTION_*,)):
        ...
    ....
  
  This makes code bit easier to understand and prevent iterating over actions
  which we don't need.

REPOSITORY
  rHG Mercurial

BRANCH
  default

REVISION DETAIL
  https://phab.mercurial-scm.org/D8884

AFFECTED FILES
  mercurial/merge.py

CHANGE DETAILS




To: pulkit, #hg-reviewers
Cc: mercurial-patches, mercurial-devel

Patch

diff --git a/mercurial/merge.py b/mercurial/merge.py
--- a/mercurial/merge.py
+++ b/mercurial/merge.py
@@ -414,30 +414,33 @@ 
     # The set of files deleted by all the actions.
     deletedfiles = set()
 
-    for f, (m, args, msg) in mresult.actions.items():
-        if m in (
+    for (f, args, msg) in mresult.getactions(
+        (
             mergestatemod.ACTION_CREATED,
             mergestatemod.ACTION_DELETED_CHANGED,
             mergestatemod.ACTION_MERGE,
             mergestatemod.ACTION_CREATED_MERGE,
-        ):
-            # This action may create a new local file.
-            createdfiledirs.update(pathutil.finddirs(f))
-            if mf.hasdir(f):
-                # The file aliases a local directory.  This might be ok if all
-                # the files in the local directory are being deleted.  This
-                # will be checked once we know what all the deleted files are.
-                remoteconflicts.add(f)
-        # Track the names of all deleted files.
-        if m == mergestatemod.ACTION_REMOVE:
-            deletedfiles.add(f)
-        if m == mergestatemod.ACTION_MERGE:
-            f1, f2, fa, move, anc = args
-            if move:
-                deletedfiles.add(f1)
-        if m == mergestatemod.ACTION_DIR_RENAME_MOVE_LOCAL:
-            f2, flags = args
-            deletedfiles.add(f2)
+        )
+    ):
+        # This action may create a new local file.
+        createdfiledirs.update(pathutil.finddirs(f))
+        if mf.hasdir(f):
+            # The file aliases a local directory.  This might be ok if all
+            # the files in the local directory are being deleted.  This
+            # will be checked once we know what all the deleted files are.
+            remoteconflicts.add(f)
+    # Track the names of all deleted files.
+    for (f, args, msg) in mresult.getactions((mergestatemod.ACTION_REMOVE,)):
+        deletedfiles.add(f)
+    for (f, args, msg) in mresult.getactions((mergestatemod.ACTION_MERGE,)):
+        f1, f2, fa, move, anc = args
+        if move:
+            deletedfiles.add(f1)
+    for (f, args, msg) in mresult.getactions(
+        (mergestatemod.ACTION_DIR_RENAME_MOVE_LOCAL,)
+    ):
+        f2, flags = args
+        deletedfiles.add(f2)
 
     # Check all directories that contain created files for path conflicts.
     for p in createdfiledirs: