Mercurial > hg-stable
changeset 37128:6f570c501e3e
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
author | Gregory Szorc <gregory.szorc@gmail.com> |
---|---|
date | Mon, 05 Mar 2018 00:30:00 -0500 |
parents | 6715e8035b4f |
children | 4bd73a955ab0 |
files | hgext/histedit.py hgext/rebase.py mercurial/commands.py mercurial/hg.py mercurial/merge.py |
diffstat | 5 files changed, 20 insertions(+), 11 deletions(-) [+] |
line wrap: on
line diff
--- 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(
--- 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:
--- 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))
--- 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):
--- 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):