mirror of
https://github.com/facebook/sapling.git
synced 2024-10-11 17:27:53 +03:00
f7228afd10
Summary: The "sensitive config sections" was used because "hg serve" loading different extensions are incompatible with each other. Now we neither load extensions nor run their uisetups, and just use one chg server. So sensitive config sections can be removed. Reviewed By: singhsrb Differential Revision: D7847149 fbshipit-source-id: 758c1df21d280bf0f88d91432e1201c8417df532
66 lines
2.0 KiB
Python
66 lines
2.0 KiB
Python
# hiddenerror.py
|
|
#
|
|
# Copyright 2017 Facebook, Inc.
|
|
#
|
|
# This software may be used and distributed according to the terms of the
|
|
# GNU General Public License version 2 or any later version.
|
|
|
|
"""configurable error messages for accessing hidden changesets
|
|
|
|
Set the following configuration options to customize the error message
|
|
seen when the user attempts to access a hidden changeset::
|
|
|
|
[hiddenerror]
|
|
message = my custom message
|
|
hint = my custom hint
|
|
|
|
The message and hint can contain an optional `{0}` which will be substituted
|
|
with the hash of the hidden changeset.
|
|
"""
|
|
from __future__ import absolute_import
|
|
|
|
from mercurial.node import short
|
|
from mercurial.i18n import _
|
|
from mercurial import (
|
|
context,
|
|
error,
|
|
extensions,
|
|
)
|
|
|
|
testedwith = 'ships-with-fb-hgext'
|
|
|
|
def uisetup(ui):
|
|
"""Wrap context.changectx to catch FilteredRepoLookupError."""
|
|
# Get the error messages from the user's configuration and substitute the
|
|
# hash in.
|
|
msgfmt, hintfmt = _getstrings(ui)
|
|
|
|
def _filterederror(orig, repo, rev):
|
|
# If the number is beyond the changelog, it's a short hash that
|
|
# just happened to be a number.
|
|
intrev = None
|
|
try:
|
|
intrev = int(rev)
|
|
except ValueError:
|
|
pass
|
|
if intrev is not None and intrev < len(repo):
|
|
node = repo.unfiltered()[rev].node()
|
|
shorthash = short(node)
|
|
msg = msgfmt.format(shorthash)
|
|
hint = hintfmt and hintfmt.format(shorthash)
|
|
return error.FilteredRepoLookupError(msg, hint=hint)
|
|
return orig(repo, rev)
|
|
|
|
extensions.wrapfunction(context, '_filterederror', _filterederror)
|
|
|
|
def _getstrings(ui):
|
|
"""Lood the error messages to show when the user tries to access a
|
|
hidden commit from the user's configuration file. Fall back to
|
|
default messages if nothing is configured.
|
|
"""
|
|
msg = ui.config('hiddenerror', 'message')
|
|
hint = ui.config('hiddenerror', 'hint')
|
|
if not msg:
|
|
msg = _("hidden changeset {0}")
|
|
return msg, hint
|