Patchwork D2694: merge: deprecate accessing update results by index

login
register
mail settings
Submitter phabricator
Date March 24, 2018, 6:11 p.m.
Message ID <95ce354ad67465c5e64fa17c85a4c2e2@localhost.localdomain>
Download mbox | patch
Permalink /patch/29819/
State Not Applicable
Headers show

Comments

phabricator - March 24, 2018, 6:11 p.m.
indygreg updated this revision to Diff 7269.

REPOSITORY
  rHG Mercurial

CHANGES SINCE LAST UPDATE
  https://phab.mercurial-scm.org/D2694?vs=6970&id=7269

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

AFFECTED FILES
  hgext/histedit.py
  hgext/rebase.py
  mercurial/commands.py
  mercurial/hg.py
  mercurial/merge.py

CHANGE DETAILS




To: indygreg, durin42, #hg-reviewers, martinvonz
Cc: mercurial-devel

Patch

diff --git a/mercurial/merge.py b/mercurial/merge.py
--- a/mercurial/merge.py
+++ b/mercurial/merge.py
@@ -1408,9 +1408,15 @@ 
     removedcount = attr.ib()
     unresolvedcount = attr.ib()
 
+    def isempty(self):
+        return (not self.updatedcount and not self.mergedcount
+                and not self.removedcount and not self.unresolvedcount)
+
     # TODO remove container emulation once consumers switch to new API.
 
     def __getitem__(self, x):
+        util.nouideprecwarn('access merge.update() results by name instead of '
+                            'index', '4.6', 2)
         if x == 0:
             return self.updatedcount
         elif x == 1:
@@ -1423,6 +1429,8 @@ 
             raise IndexError('can only access items 0-3')
 
     def __len__(self):
+        util.nouideprecwarn('access merge.update() results by name instead of '
+                            'index', '4.6', 2)
         return 4
 
 def applyupdates(repo, actions, wctx, mctx, overwrite, labels=None):
@@ -2070,7 +2078,8 @@ 
         sparse.prunetemporaryincludes(repo)
 
     if not partial:
-        repo.hook('update', parent1=xp1, parent2=xp2, error=stats[3])
+        repo.hook('update', parent1=xp1, parent2=xp2,
+                  error=stats.unresolvedcount)
     return stats
 
 def graft(repo, ctx, pctx, labels, keepparent=False):
diff --git a/mercurial/hg.py b/mercurial/hg.py
--- a/mercurial/hg.py
+++ b/mercurial/hg.py
@@ -749,7 +749,7 @@ 
     return srcpeer, destpeer
 
 def _showstats(repo, stats, quietempty=False):
-    if quietempty and not any(stats):
+    if quietempty and stats.isempty():
         return
     repo.ui.status(_("%d files updated, %d files merged, "
                      "%d files removed, %d files unresolved\n") % (
@@ -770,9 +770,9 @@ 
     """update the working directory to node"""
     stats = updaterepo(repo, node, False, updatecheck=updatecheck)
     _showstats(repo, stats, quietempty)
-    if stats[3]:
+    if stats.unresolvedcount:
         repo.ui.status(_("use 'hg resolve' to retry unresolved file merges\n"))
-    return stats[3] > 0
+    return stats.unresolvedcount > 0
 
 # naming conflict in clone()
 _update = update
@@ -783,7 +783,7 @@ 
     repo.vfs.unlinkpath('graftstate', ignoremissing=True)
     if show_stats:
         _showstats(repo, stats, quietempty)
-    return stats[3] > 0
+    return stats.unresolvedcount > 0
 
 # naming conflict in updatetotally()
 _clean = clean
@@ -882,12 +882,12 @@ 
                                 labels=labels)
 
     _showstats(repo, stats)
-    if stats[3]:
+    if stats.unresolvedcount:
         repo.ui.status(_("use 'hg resolve' to retry unresolved file merges "
                          "or 'hg merge --abort' to abandon\n"))
     elif remind and not abort:
         repo.ui.status(_("(branch merge, don't forget to commit)\n"))
-    return stats[3] > 0
+    return stats.unresolvedcount > 0
 
 def _incoming(displaychlist, subreporecurse, ui, repo, source,
         opts, buffered=False):
diff --git a/mercurial/commands.py b/mercurial/commands.py
--- a/mercurial/commands.py
+++ b/mercurial/commands.py
@@ -628,7 +628,7 @@ 
             repo.setparents(op1, op2)
             dsguard.close()
             hg._showstats(repo, stats)
-            if stats[3]:
+            if stats.unresolvedcount:
                 repo.ui.status(_("use 'hg resolve' to retry unresolved "
                                  "file merges\n"))
                 return 1
@@ -2310,7 +2310,7 @@ 
             finally:
                 repo.ui.setconfig('ui', 'forcemerge', '', 'graft')
             # report any conflicts
-            if stats[3] > 0:
+            if stats.unresolvedcount > 0:
                 # write out state for --continue
                 nodelines = [repo[rev].hex() + "\n" for rev in revs[pos:]]
                 repo.vfs.write('graftstate', ''.join(nodelines))
diff --git a/hgext/rebase.py b/hgext/rebase.py
--- a/hgext/rebase.py
+++ b/hgext/rebase.py
@@ -525,7 +525,7 @@ 
                 with ui.configoverride(overrides, 'rebase'):
                     stats = rebasenode(repo, rev, p1, base, self.collapsef,
                                        dest, wctx=self.wctx)
-                    if stats[3] > 0:
+                    if stats.unresolvedcount > 0:
                         if self.inmemory:
                             raise error.InMemoryMergeConflictsError()
                         else:
diff --git a/hgext/histedit.py b/hgext/histedit.py
--- a/hgext/histedit.py
+++ b/hgext/histedit.py
@@ -492,7 +492,7 @@ 
         hg.update(repo, self.state.parentctxnode, quietempty=True)
         stats = applychanges(repo.ui, repo, rulectx, {})
         repo.dirstate.setbranch(rulectx.branch())
-        if stats and stats[3] > 0:
+        if stats.unresolvedcount:
             buf = repo.ui.popbuffer()
             repo.ui.write(buf)
             raise error.InterventionRequired(