Mercurial > hg
changeset 35243:490df753894d
rewriteutil: add a precheck function to check if revs can be rewritten
The precheck function is intended to be used before we start rewritting
changesets.
Differential Revision: https://phab.mercurial-scm.org/D1503
author | Pulkit Goyal <7895pulkit@gmail.com> |
---|---|
date | Fri, 24 Nov 2017 03:44:50 +0530 |
parents | 27d5c2d2db2b |
children | 98f97eb20597 |
files | mercurial/rewriteutil.py |
diffstat | 1 files changed, 28 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/rewriteutil.py Fri Nov 24 03:40:33 2017 +0530 +++ b/mercurial/rewriteutil.py Fri Nov 24 03:44:50 2017 +0530 @@ -7,11 +7,39 @@ from __future__ import absolute_import +from .i18n import _ + from . import ( + error, + node, obsolete, revset, ) +def precheck(repo, revs, action='rewrite'): + """check if revs can be rewritten + action is used to control the error message. + + Make sure this function is called after taking the lock. + """ + if node.nullrev in revs: + msg = _("cannot %s null changeset") % (action) + hint = _("no changeset checked out") + raise error.Abort(msg, hint=hint) + + publicrevs = repo.revs('%ld and public()', revs) + if len(repo[None].parents()) > 1: + raise error.Abort(_("cannot %s while merging") % action) + + if publicrevs: + msg = _("cannot %s public changesets") % (action) + hint = _("see 'hg help phases' for details") + raise error.Abort(msg, hint=hint) + + newunstable = disallowednewunstable(repo, revs) + if newunstable: + raise error.Abort(_("cannot %s changeset with children") % action) + def disallowednewunstable(repo, revs): """Checks whether editing the revs will create new unstable changesets and are we allowed to create them.