mercurial/cmdutil.py
changeset 43945 07ebb567e8bb
parent 43944 489fdf27769c
child 43947 dfac25883dbf
--- a/mercurial/cmdutil.py	Wed Dec 18 23:43:21 2019 -0800
+++ b/mercurial/cmdutil.py	Wed Dec 18 23:45:11 2019 -0800
@@ -811,9 +811,11 @@
     unfinishedmsg = attr.ib()
     activemerge = attr.ib()
     unresolvedpaths = attr.ib()
+    _formattedpaths = attr.ib(init=False, default=set())
     _label = b'status.morestatus'
 
     def formatfile(self, path, fm):
+        self._formattedpaths.add(path)
         if self.activemerge and path in self.unresolvedpaths:
             fm.data(unresolved=True)
 
@@ -832,6 +834,7 @@
         if self.unfinishedmsg:
             fm.data(unfinishedmsg=self.unfinishedmsg)
 
+        # May also start new data items.
         self._formatconflicts(fm)
 
         if self.unfinishedmsg:
@@ -861,6 +864,19 @@
                 )
                 % mergeliststr
             )
+
+            # If any paths with unresolved conflicts were not previously
+            # formatted, output them now.
+            for f in self.unresolvedpaths:
+                if f in self._formattedpaths:
+                    # Already output.
+                    continue
+                fm.startitem()
+                # We can't claim to know the status of the file - it may just
+                # have been in one of the states that were not requested for
+                # display, so it could be anything.
+                fm.data(itemtype=b'file', path=f, unresolved=True)
+
         else:
             msg = _(b'No unresolved merge conflicts.')