# HG changeset patch # User Pierre-Yves David # Date 2014-04-01 20:45:48 # Node ID e10000369b475fce460380f9cba99d9eb0821564 # Parent d771641b705127218044ea858c809ff12753171e push: pass a `pushoperation` object to localrepo.checkpush The `pushoperation` object contains strictly more data the arguments currently passed to `localrepo.checkpush` we pass the new object instead. This function is used by MQ to abort push that includes MQ changesets. Note: extension that may use this function will have to align. diff --git a/hgext/mq.py b/hgext/mq.py --- a/hgext/mq.py +++ b/hgext/mq.py @@ -3289,14 +3289,14 @@ def reposetup(ui, repo): return super(mqrepo, self).commit(text, user, date, match, force, editor, extra) - def checkpush(self, force, revs): - if self.mq.applied and self.mq.checkapplied and not force: + def checkpush(self, pushop): + if self.mq.applied and self.mq.checkapplied and not pushop.force: outapplied = [e.node for e in self.mq.applied] - if revs: + if pushop.revs: # Assume applied patches have no non-patch descendants and # are not on remote already. Filtering any changeset not # pushed. - heads = set(revs) + heads = set(pushop.revs) for node in reversed(outapplied): if node in heads: break @@ -3307,7 +3307,7 @@ def reposetup(ui, repo): if self[node].phase() < phases.secret: raise util.Abort(_('source has mq patches applied')) # no non-secret patches pushed - super(mqrepo, self).checkpush(force, revs) + super(mqrepo, self).checkpush(pushop) def _findtags(self): '''augment tags from base class with patch tags''' diff --git a/mercurial/exchange.py b/mercurial/exchange.py --- a/mercurial/exchange.py +++ b/mercurial/exchange.py @@ -95,7 +95,7 @@ def push(repo, remote, force=False, revs msg = 'cannot lock source repository: %s\n' % err pushop.ui.debug(msg) try: - pushop.repo.checkpush(pushop.force, pushop.revs) + pushop.repo.checkpush(pushop) lock = None unbundle = pushop.remote.capable('unbundle') if not unbundle: diff --git a/mercurial/localrepo.py b/mercurial/localrepo.py --- a/mercurial/localrepo.py +++ b/mercurial/localrepo.py @@ -1673,7 +1673,7 @@ class localrepository(object): def pull(self, remote, heads=None, force=False): return exchange.pull (self, remote, heads, force) - def checkpush(self, force, revs): + def checkpush(self, pushop): """Extensions can override this function if additional checks have to be performed before pushing, or call it if they override push command.