Mercurial > hg
view hgext/hooklib/enforce_draft_commits.py @ 51407:71ae6fee2b9d
phases: fast path retract of public phase
There are no boundary to retract, so lets do nothing.
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Wed, 21 Feb 2024 15:24:22 +0100 |
parents | 6000f5b25c9b |
children | f4733654f144 |
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 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'])) )