# HG changeset patch # User Gregory Szorc # Date 1520227800 18000 # Node ID 6f570c501e3ebc3d9b59920f50ed7523d93cb847 # Parent 6715e8035b4ff9379a80f5413a4e9148114ab256 merge: deprecate accessing update results by index Now that we have named attributes, let's convert the code base to use them. We also add deprecation warnings so legacy consumers are aware of their transgressions. ``stats.unresolvedcount`` is much easier to read than ``stats[3]``, don't you think? Differential Revision: https://phab.mercurial-scm.org/D2694 diff -r 6715e8035b4f -r 6f570c501e3e hgext/histedit.py --- a/hgext/histedit.py Sun Mar 25 11:58:05 2018 +0900 +++ b/hgext/histedit.py Mon Mar 05 00:30:00 2018 -0500 @@ -499,7 +499,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( diff -r 6715e8035b4f -r 6f570c501e3e hgext/rebase.py --- a/hgext/rebase.py Sun Mar 25 11:58:05 2018 +0900 +++ b/hgext/rebase.py Mon Mar 05 00:30:00 2018 -0500 @@ -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 -r 6715e8035b4f -r 6f570c501e3e mercurial/commands.py --- a/mercurial/commands.py Sun Mar 25 11:58:05 2018 +0900 +++ b/mercurial/commands.py Mon Mar 05 00:30:00 2018 -0500 @@ -629,7 +629,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 @@ -2311,7 +2311,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 -r 6715e8035b4f -r 6f570c501e3e mercurial/hg.py --- a/mercurial/hg.py Sun Mar 25 11:58:05 2018 +0900 +++ b/mercurial/hg.py Mon Mar 05 00:30:00 2018 -0500 @@ -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 -r 6715e8035b4f -r 6f570c501e3e mercurial/merge.py --- a/mercurial/merge.py Sun Mar 25 11:58:05 2018 +0900 +++ b/mercurial/merge.py Mon Mar 05 00:30:00 2018 -0500 @@ -1483,9 +1483,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: @@ -1498,6 +1504,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): @@ -2164,7 +2172,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):