diff mercurial/commands.py @ 34559:eddeedbde866

commands: tidy up merge state decoding in resolve Make the mapping from merge state to label and display key explicit, and move construction of the dict out of the loop. Differential Revision: https://phab.mercurial-scm.org/D861
author Mark Thomas <mbthomas@fb.com>
date Mon, 02 Oct 2017 14:05:30 -0700
parents e4cf957bf7ce
children 6ce2d81968aa
line wrap: on
line diff
--- a/mercurial/commands.py	Mon Oct 02 14:05:30 2017 -0700
+++ b/mercurial/commands.py	Mon Oct 02 14:05:30 2017 -0700
@@ -4272,23 +4272,26 @@
         fm = ui.formatter('resolve', opts)
         ms = mergemod.mergestate.read(repo)
         m = scmutil.match(repo[None], pats, opts)
+
+        # Labels and keys based on merge state.  Unresolved path conflicts show
+        # as 'P'.  Resolved path conflicts show as 'R', the same as normal
+        # resolved conflicts.
+        mergestateinfo = {
+            'u': ('resolve.unresolved', 'U'),
+            'r': ('resolve.resolved', 'R'),
+            'pu': ('resolve.unresolved', 'P'),
+            'pr': ('resolve.resolved', 'R'),
+            'd': ('resolve.driverresolved', 'D'),
+        }
+
         for f in ms:
             if not m(f):
                 continue
 
-            # Set label based on merge state.
-            l = 'resolve.' + {'u': 'unresolved', 'r': 'resolved',
-                              'pu': 'unresolved', 'pr': 'resolved',
-                              'd': 'driverresolved'}[ms[f]]
-
-            # Set key based on merge state.  Unresolved path conflicts show
-            # as 'P'.  Resolved path conflicts show as 'R', the same as normal
-            # resolved conflicts.
-            key = {'pu': 'P', 'pr': 'R'}.get(ms[f], ms[f].upper())
-
+            label, key = mergestateinfo[ms[f]]
             fm.startitem()
-            fm.condwrite(not nostatus, 'status', '%s ', key, label=l)
-            fm.write('path', '%s\n', f, label=l)
+            fm.condwrite(not nostatus, 'status', '%s ', key, label=label)
+            fm.write('path', '%s\n', f, label=label)
         fm.end()
         return 0