Mercurial > hg
view hgext/hooklib/enforce_draft_commits.py @ 47742:f51aaa0f1485
dirstate: deprecate the `otherparent` method in all cases
All code have been migrated to the new APIs.
Differential Revision: https://phab.mercurial-scm.org/D11184
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Mon, 19 Jul 2021 00:31:59 +0200 |
parents | 4cabeea6d214 |
children | 6000f5b25c9b |
line wrap: on
line source
# Copyright 2020 Joerg Sonnenberger <joerg@bec.de> # # This software may be used and distributed according to the terms of the # GNU General Public License version 2 or any later version. """enforce_draft_commits us a hook to ensure that all new changesets are in the draft phase. This allows enforcing policies for work-in-progress changes in overlay repositories, i.e. a shared hidden repositories with different views for work-in-progress code and public history. Usage: [hooks] pretxnclose-phase.enforce_draft_commits = \ python:hgext.hooklib.enforce_draft_commits.hook """ from __future__ import absolute_import from mercurial.i18n import _ from mercurial import ( error, pycompat, ) def hook(ui, repo, hooktype, node=None, **kwargs): if hooktype != b"pretxnclose-phase": raise error.Abort( _(b'Unsupported hook type %r') % pycompat.bytestr(hooktype) ) ctx = repo.unfiltered()[node] if kwargs['oldphase']: raise error.Abort( _(b'Phase change from %r to %r for %s rejected') % ( pycompat.bytestr(kwargs['oldphase']), pycompat.bytestr(kwargs['phase']), ctx, ) ) elif kwargs['phase'] != b'draft': raise error.Abort( _(b'New changeset %s in phase %r rejected') % (ctx, pycompat.bytestr(kwargs['phase'])) )