Patchwork D7594: status: add template/json data about whether a file has unresolved conflicts

login
register
mail settings
Submitter phabricator
Date Dec. 10, 2019, 6:40 a.m.
Message ID <differential-rev-PHID-DREV-2eahzmf6ofl2n7yces26-req@mercurial-scm.org>
Download mbox | patch
Permalink /patch/43662/
State Superseded
Headers show

Comments

phabricator - Dec. 10, 2019, 6:40 a.m.
rdamazio created this revision.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.

REPOSITORY
  rHG Mercurial

BRANCH
  default

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

AFFECTED FILES
  mercurial/cmdutil.py
  mercurial/commands.py
  tests/test-conflict.t

CHANGE DETAILS




To: rdamazio, #hg-reviewers
Cc: mercurial-devel
phabricator - Dec. 11, 2019, 5:02 p.m.
martinvonz added inline comments.

INLINE COMMENTS

> cmdutil.py:792
> +    def formatfile(self, path, fm):
> +        if self.inmergestate and path in self.unresolvedpaths:
> +            fm.data(unresolved=True)

That's an O(n) lookup. Probably fine since you very rarely have thousands of conflicts...

REPOSITORY
  rHG Mercurial

CHANGES SINCE LAST ACTION
  https://phab.mercurial-scm.org/D7594/new/

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

To: rdamazio, #hg-reviewers, pulkit
Cc: martinvonz, mercurial-devel
phabricator - Dec. 11, 2019, 9:38 p.m.
rdamazio added inline comments.

INLINE COMMENTS

> martinvonz wrote in cmdutil.py:792
> That's an O(n) lookup. Probably fine since you very rarely have thousands of conflicts...

Yes, I thought of storing it as a set, but then thought that it either didn't matter or would be slower because there are so few items.

REPOSITORY
  rHG Mercurial

CHANGES SINCE LAST ACTION
  https://phab.mercurial-scm.org/D7594/new/

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

To: rdamazio, #hg-reviewers, pulkit
Cc: martinvonz, mercurial-devel

Patch

diff --git a/tests/test-conflict.t b/tests/test-conflict.t
--- a/tests/test-conflict.t
+++ b/tests/test-conflict.t
@@ -64,7 +64,8 @@ 
   [
    {
     "path": "a",
-    "status": "M"
+    "status": "M",
+    "unresolved": true
    },
    {
     "path": "a.orig",
diff --git a/mercurial/commands.py b/mercurial/commands.py
--- a/mercurial/commands.py
+++ b/mercurial/commands.py
@@ -6893,6 +6893,8 @@ 
                         (b'  %s' + end) % uipathfn(copy[f]),
                         label=b'status.copied',
                     )
+                if morestatus:
+                    morestatus.formatfile(f, fm)
 
     if morestatus:
         morestatus.formatfooter(fm)
diff --git a/mercurial/cmdutil.py b/mercurial/cmdutil.py
--- a/mercurial/cmdutil.py
+++ b/mercurial/cmdutil.py
@@ -788,6 +788,10 @@ 
     unresolvedpaths = attr.ib()
     _label = b'status.morestatus'
 
+    def formatfile(self, path, fm):
+        if self.inmergestate and path in self.unresolvedpaths:
+            fm.data(unresolved=True)
+
     def formatfooter(self, fm):
         statemsg = _(b'The repository is in an unfinished *%s* state.'
                      ) % self.unfinishedop