##// END OF EJS Templates
rust-status: move to recursive traversal to prepare for parallel traversal...
rust-status: move to recursive traversal to prepare for parallel traversal I have looked into traversing the working directory in parallel either by a recursive or an iterative algorithm. The recursive approach won quite decisively both in terms of performance and code readability. You can look at my experiment here: https://heptapod.octobus.net/Alphare/rayon-recursive-traversal The chance of a stack overflow happening because the directories get too nested seems slim. This change does not yet do anything in parallel. Differential Revision: https://phab.mercurial-scm.org/D8215

File last commit:

r44897:4cabeea6 default
r45023:f8a9922a default
Show More
enforce_draft_commits.py
45 lines | 1.4 KiB | text/x-python | PythonLexer
/ hgext / hooklib / enforce_draft_commits.py
# 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']))
)