D2692: merge: return an attrs class from update() and applyupdates()
indygreg (Gregory Szorc)
phabricator at mercurial-scm.org
Sat Mar 24 17:22:22 EDT 2018
This revision was automatically updated to reflect the committed changes.
Closed by commit rHG71543b942eea: merge: return an attrs class from update() and applyupdates() (authored by indygreg, committed by ).
REPOSITORY
rHG Mercurial
CHANGES SINCE LAST UPDATE
https://phab.mercurial-scm.org/D2692?vs=6969&id=7274
REVISION DETAIL
https://phab.mercurial-scm.org/D2692
AFFECTED FILES
mercurial/hg.py
mercurial/merge.py
CHANGE DETAILS
diff --git a/mercurial/merge.py b/mercurial/merge.py
--- a/mercurial/merge.py
+++ b/mercurial/merge.py
@@ -22,6 +22,9 @@
nullid,
nullrev,
)
+from .thirdparty import (
+ attr,
+)
from . import (
copies,
error,
@@ -1398,6 +1401,30 @@
prefetch = scmutil.fileprefetchhooks
prefetch(repo, ctx, [f for sublist in oplist for f, args, msg in sublist])
+ at attr.s(frozen=True)
+class updateresult(object):
+ updatedcount = attr.ib()
+ mergedcount = attr.ib()
+ removedcount = attr.ib()
+ unresolvedcount = attr.ib()
+
+ # TODO remove container emulation once consumers switch to new API.
+
+ def __getitem__(self, x):
+ if x == 0:
+ return self.updatedcount
+ elif x == 1:
+ return self.mergedcount
+ elif x == 2:
+ return self.removedcount
+ elif x == 3:
+ return self.unresolvedcount
+ else:
+ raise IndexError('can only access items 0-3')
+
+ def __len__(self):
+ return 4
+
def applyupdates(repo, actions, wctx, mctx, overwrite, labels=None):
"""apply the merge action list to the working directory
@@ -1581,7 +1608,8 @@
if not proceed:
# XXX setting unresolved to at least 1 is a hack to make sure we
# error out
- return updated, merged, removed, max(len(unresolvedf), 1)
+ return updateresult(updated, merged, removed,
+ max(len(unresolvedf), 1))
newactions = []
for f, args, msg in mergeactions:
if f in unresolvedf:
@@ -1656,8 +1684,7 @@
actions['m'] = [a for a in actions['m'] if a[0] in mfiles]
progress(_updating, None, total=numupdates, unit=_files)
-
- return updated, merged, removed, unresolved
+ return updateresult(updated, merged, removed, unresolved)
def recordupdates(repo, actions, branchmerge):
"record merge actions to the dirstate"
@@ -1878,7 +1905,7 @@
# call the hooks and exit early
repo.hook('preupdate', throw=True, parent1=xp2, parent2='')
repo.hook('update', parent1=xp2, parent2='', error=0)
- return 0, 0, 0, 0
+ return updateresult(0, 0, 0, 0)
if (updatecheck == 'linear' and
pas not in ([p1], [p2])): # nonlinear
diff --git a/mercurial/hg.py b/mercurial/hg.py
--- a/mercurial/hg.py
+++ b/mercurial/hg.py
@@ -752,7 +752,9 @@
if quietempty and not any(stats):
return
repo.ui.status(_("%d files updated, %d files merged, "
- "%d files removed, %d files unresolved\n") % stats)
+ "%d files removed, %d files unresolved\n") % (
+ stats.updatedcount, stats.mergedcount,
+ stats.removedcount, stats.unresolvedcount))
def updaterepo(repo, node, overwrite, updatecheck=None):
"""Update the working directory to node.
To: indygreg, #hg-reviewers, martinvonz, durin42
Cc: martinvonz, mercurial-devel
More information about the Mercurial-devel
mailing list