Patchwork D775: commands: update the resolve command to handle path conflicts

login
register
mail settings
Submitter phabricator
Date Oct. 1, 2017, 9:33 a.m.
Message ID <9dfa72766b3bb64c0e789fe5046e5f02@localhost.localdomain>
Download mbox | patch
Permalink /patch/24287/
State Not Applicable
Headers show

Comments

phabricator - Oct. 1, 2017, 9:33 a.m.
mbthomas updated this revision to Diff 2211.

REPOSITORY
  rHG Mercurial

CHANGES SINCE LAST UPDATE
  https://phab.mercurial-scm.org/D775?vs=1993&id=2211

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

AFFECTED FILES
  mercurial/commands.py

CHANGE DETAILS




To: mbthomas, #hg-reviewers, ryanmce
Cc: ryanmce, mercurial-devel

Patch

diff --git a/mercurial/commands.py b/mercurial/commands.py
--- a/mercurial/commands.py
+++ b/mercurial/commands.py
@@ -4268,10 +4268,19 @@ 
         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())
+
             fm.startitem()
-            fm.condwrite(not nostatus, 'status', '%s ', ms[f].upper(), label=l)
+            fm.condwrite(not nostatus, 'status', '%s ', key, label=l)
             fm.write('path', '%s\n', f, label=l)
         fm.end()
         return 0
@@ -4320,6 +4329,17 @@ 
                     runconclude = True
                 continue
 
+            # path conflicts must be resolved manually
+            if ms[f] in ("pu", "pr"):
+                if mark:
+                    ms.mark(f, "pr")
+                elif unmark:
+                    ms.mark(f, "pu")
+                elif ms[f] == "pu":
+                    ui.warn(_('%s: path conflict must be resolved manually\n')
+                            % f)
+                continue
+
             if mark:
                 ms.mark(f, "r")
             elif unmark: