diff --git a/hgext/mq.py b/hgext/mq.py --- a/hgext/mq.py +++ b/hgext/mq.py @@ -2919,7 +2919,7 @@ def reposetup(ui, repo): return super(mqrepo, self).commit(text, user, date, match, force, editor, extra) - def push(self, remote, force=False, revs=None, newbranch=False): + def checkpush(self, force, revs): if self.mq.applied and not force: haspatches = True if revs: @@ -2930,7 +2930,7 @@ def reposetup(ui, repo): haspatches = bool([n for n in revs if n in applied]) if haspatches: raise util.Abort(_('source has mq patches applied')) - return super(mqrepo, self).push(remote, force, revs, newbranch) + super(mqrepo, self).checkpush(force, revs) def _findtags(self): '''augment tags from base class with patch tags''' diff --git a/mercurial/localrepo.py b/mercurial/localrepo.py --- a/mercurial/localrepo.py +++ b/mercurial/localrepo.py @@ -1305,6 +1305,13 @@ class localrepository(repo.repository): finally: lock.release() + def checkpush(self, force, revs): + """Extensions can override this function if additional checks have + to be performed before pushing, or call it if they override push + command. + """ + pass + def push(self, remote, force=False, revs=None, newbranch=False): '''Push outgoing changesets (limited by revs) from the current repository to remote. Return an integer: @@ -1321,6 +1328,7 @@ class localrepository(repo.repository): # unbundle assumes local user cannot lock remote repo (new ssh # servers, http servers). + self.checkpush(force, revs) lock = None unbundle = remote.capable('unbundle') if not unbundle: