# HG changeset patch
# User Siddharth Agarwal <sid0@fb.com>
# Date 1444863883 25200
#      Wed Oct 14 16:04:43 2015 -0700
# Node ID e1568d5eb0522b3ab20a1cbb15ec06f6d198c9a8
# Parent  f4a27c05c43f78c4a94d7749ee6039df6bce33d3
localrepo.commit: disallow commit when driver-resolved files exist

This code will not currently be activated because there's no code to mark
files as driver-resolved in core. This point is also somewhat hard to plug into
from extensions.

diff --git a/mercurial/localrepo.py b/mercurial/localrepo.py
--- a/mercurial/localrepo.py
+++ b/mercurial/localrepo.py
@@ -1553,11 +1553,21 @@
             if merge and cctx.deleted():
                 raise error.Abort(_("cannot commit merge with missing files"))
 
+            unresolved, driverresolved = False, False
             ms = mergemod.mergestate(self)
             for f in status.modified:
-                if f in ms and ms[f] == 'u':
-                    raise error.Abort(_('unresolved merge conflicts '
-                                       '(see "hg help resolve")'))
+                if f in ms:
+                    if ms[f] == 'u':
+                        unresolved = True
+                    elif ms[f] == 'd':
+                        driverresolved = True
+
+            if unresolved:
+                raise error.Abort(_('unresolved merge conflicts '
+                                    '(see "hg help resolve")'))
+            if driverresolved:
+                raise error.Abort(_('driver-resolved merge conflicts'),
+                                  hint=_('run "hg resolve --all" to resolve'))
 
             if editor:
                 cctx._text = editor(self, cctx, subs)