[Updated] [+- ] D8659: config: add `--shared` flag to edit config file of shared source
pulkit (Pulkit Goyal)
phabricator at mercurial-scm.org
Tue Aug 25 11:40:50 UTC 2020
pulkit updated this revision to Diff 22445.
REPOSITORY
rHG Mercurial
CHANGES SINCE LAST UPDATE
https://phab.mercurial-scm.org/D8659?vs=22383&id=22445
BRANCH
default
CHANGES SINCE LAST ACTION
https://phab.mercurial-scm.org/D8659/new/
REVISION DETAIL
https://phab.mercurial-scm.org/D8659
AFFECTED FILES
mercurial/commands.py
tests/test-completion.t
tests/test-share-safe.t
CHANGE DETAILS
diff --git a/tests/test-share-safe.t b/tests/test-share-safe.t
--- a/tests/test-share-safe.t
+++ b/tests/test-share-safe.t
@@ -33,6 +33,10 @@
$ hg ci -Aqm "added a"
$ echo b > b
$ hg ci -Aqm "added b"
+
+ $ HGEDITOR=cat hg config --shared
+ abort: repository is not shared one, can't use --shared
+ [255]
$ cd ..
Create a shared repo and check the requirements are shared and read correctly
@@ -85,6 +89,14 @@
$ hg showconfig ui.curses
false
+ $ HGEDITOR=cat hg config --shared
+ [ui]
+ curses=true
+
+ $ HGEDITOR=cat hg config --local
+ [ui]
+ curses=false
+
Testing that hooks set in source repository also runs in shared repo
$ cd ../source
diff --git a/tests/test-completion.t b/tests/test-completion.t
--- a/tests/test-completion.t
+++ b/tests/test-completion.t
@@ -258,7 +258,7 @@
cat: output, rev, decode, include, exclude, template
clone: noupdate, updaterev, rev, branch, pull, uncompressed, stream, ssh, remotecmd, insecure
commit: addremove, close-branch, amend, secret, edit, force-close-branch, interactive, include, exclude, message, logfile, date, user, subrepos
- config: untrusted, edit, local, global, template
+ config: untrusted, edit, local, shared, global, template
continue: dry-run
copy: forget, after, at-rev, force, include, exclude, dry-run
debugancestor:
diff --git a/mercurial/commands.py b/mercurial/commands.py
--- a/mercurial/commands.py
+++ b/mercurial/commands.py
@@ -55,6 +55,7 @@
pycompat,
rcutil,
registrar,
+ requirements,
revsetlang,
rewriteutil,
scmutil,
@@ -66,6 +67,7 @@
ui as uimod,
util,
verify as verifymod,
+ vfs as vfsmod,
wireprotoserver,
)
from .utils import (
@@ -2141,6 +2143,7 @@
(b'u', b'untrusted', None, _(b'show untrusted configuration options')),
(b'e', b'edit', None, _(b'edit user config')),
(b'l', b'local', None, _(b'edit repository config')),
+ (b'', b'shared', None, _(b'edit share source config (EXPERIMENTAL)')),
(b'g', b'global', None, _(b'edit global config')),
]
+ formatteropts,
@@ -2179,22 +2182,34 @@
:source: String. Filename and line number where the item is defined.
:value: String. Config value.
+ The --shared flag can be used to edit the config file of share source
+ repository. It only works when you have shared using the experimental safe
+ method.
+
Returns 0 on success, 1 if NAME does not exist.
"""
opts = pycompat.byteskwargs(opts)
- editopts = (b'edit', b'local', b'global')
+ editopts = (b'edit', b'local', b'global', b'shared')
if any(opts.get(o) for o in editopts):
- if opts.get(b'local') and opts.get(b'global'):
- raise error.Abort(_(b"can't use --local and --global together"))
-
+ cmdutil.check_at_most_one_arg(opts, *editopts[1:])
if opts.get(b'local'):
if not repo:
raise error.Abort(_(b"can't use --local outside a repository"))
paths = [repo.vfs.join(b'hgrc')]
elif opts.get(b'global'):
paths = rcutil.systemrcpath()
+ elif opts.get(b'shared'):
+ if not repo.shared():
+ raise error.Abort(
+ _(b"repository is not shared one, can't use --shared")
+ )
+ if requirements.SHARESAFE_REQUIREMENT not in repo.requirements:
+ raise error.Abort(
+ _(b"this does not support editing share source config")
+ )
+ paths = [vfsmod.vfs(repo.sharedpath).join(b'hgrc')]
else:
paths = rcutil.userrcpath()
To: pulkit, #hg-reviewers, marmoute
Cc: mercurial-patches
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mercurial-scm.org/pipermail/mercurial-patches/attachments/20200825/046375d3/attachment-0002.html>
More information about the Mercurial-patches
mailing list