Mercurial > hg
view hgext/hooklib/enforce_draft_commits.py @ 46239:d159d0fafa78
sharesafe: introduce config to disallow outdated shares if upgrade fails
After this patch, we have config option to control all aspects of shares
when share source is upgraded or downgraded.
Differential Revision: https://phab.mercurial-scm.org/D9692
author | Pulkit Goyal <7895pulkit@gmail.com> |
---|---|
date | Fri, 08 Jan 2021 21:47:31 +0530 |
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'])) )