D1013: dispatch: filter the repository depending on func.cmdtype
pulkit (Pulkit Goyal)
phabricator at mercurial-scm.org
Wed Oct 11 19:11:06 UTC 2017
pulkit created this revision.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.
REVISION SUMMARY
This patch adds support for filtering the repository on the basis of
func.cmdtype. After this patch, repo.filtername will be used to decide what
level of access the running command can has on hidden commits.
All this logic is behind a config flag `experimental.directacess` which defaults
to False.
REPOSITORY
rHG Mercurial
REVISION DETAIL
https://phab.mercurial-scm.org/D1013
AFFECTED FILES
mercurial/configitems.py
mercurial/dispatch.py
CHANGE DETAILS
diff --git a/mercurial/dispatch.py b/mercurial/dispatch.py
--- a/mercurial/dispatch.py
+++ b/mercurial/dispatch.py
@@ -42,6 +42,8 @@
)
unrecoverablewrite = registrar.command.unrecoverablewrite
+recoverablewrite = registrar.command.recoverablewrite
+readonly = registrar.command.readonly
class request(object):
def __init__(self, args, ui=None, repo=None, fin=None, fout=None,
@@ -926,6 +928,14 @@
ui = repo.ui
if options['hidden']:
repo = repo.unfiltered()
+
+ # Accessing hidden commits based on func.cmdtype
+ if lui.configbool('experimental', 'directaccess'):
+ if func.cmdtype == readonly:
+ repo = repo.filtered('visible-hidden')
+ elif func.cmdtype == recoverablewrite:
+ repo = repo.filtered('visible-warnhidden')
+
args.insert(0, repo)
elif rpath:
ui.warn(_("warning: --repository ignored\n"))
diff --git a/mercurial/configitems.py b/mercurial/configitems.py
--- a/mercurial/configitems.py
+++ b/mercurial/configitems.py
@@ -278,6 +278,9 @@
coreconfigitem('experimental', 'crecordtest',
default=None,
)
+coreconfigitem('experimental', 'directaccess',
+ default=False,
+)
coreconfigitem('experimental', 'editortmpinhg',
default=False,
)
To: pulkit, #hg-reviewers
Cc: mercurial-devel
More information about the Mercurial-devel
mailing list