Mercurial > public > mercurial-scm > hg
comparison mercurial/commands.py @ 45783:88a47cbf063c
config: add a .hg/hgrc-not-shared which won't be shared in share-safe mode
Previous patches add a safe mode for sharing repositories which involve sharing
of source requirements and config files.
In certain situations we might need to add a config to source repository which
we does not want to share. For this, we add a `.hg/hgrc-not-shared` which won't
be shared.
This also adds a `--non-shared` flag to `hg config` command to see the
non-shared config.
Differential Revision: https://phab.mercurial-scm.org/D8673
author | Pulkit Goyal <7895pulkit@gmail.com> |
---|---|
date | Wed, 01 Jul 2020 15:14:59 +0530 |
parents | 450e17e59603 |
children | 74271829ddc0 |
comparison
equal
deleted
inserted
replaced
45782:fd1de908f2b4 | 45783:88a47cbf063c |
---|---|
2137 b'', | 2137 b'', |
2138 b'shared', | 2138 b'shared', |
2139 None, | 2139 None, |
2140 _(b'edit shared source repository config (EXPERIMENTAL)'), | 2140 _(b'edit shared source repository config (EXPERIMENTAL)'), |
2141 ), | 2141 ), |
2142 (b'', b'non-shared', None, _(b'edit non shared config (EXPERIMENTAL)')), | |
2142 (b'g', b'global', None, _(b'edit global config')), | 2143 (b'g', b'global', None, _(b'edit global config')), |
2143 ] | 2144 ] |
2144 + formatteropts, | 2145 + formatteropts, |
2145 _(b'[-u] [NAME]...'), | 2146 _(b'[-u] [NAME]...'), |
2146 helpcategory=command.CATEGORY_HELP, | 2147 helpcategory=command.CATEGORY_HELP, |
2167 | 2168 |
2168 See :hg:`help config` for more information about config files. | 2169 See :hg:`help config` for more information about config files. |
2169 | 2170 |
2170 .. container:: verbose | 2171 .. container:: verbose |
2171 | 2172 |
2173 --non-shared flag is used to edit `.hg/hgrc-not-shared` config file. | |
2174 This file is not shared across shares when in share-safe mode. | |
2175 | |
2172 Template: | 2176 Template: |
2173 | 2177 |
2174 The following keywords are supported. See also :hg:`help templates`. | 2178 The following keywords are supported. See also :hg:`help templates`. |
2175 | 2179 |
2176 :name: String. Config name. | 2180 :name: String. Config name. |
2184 Returns 0 on success, 1 if NAME does not exist. | 2188 Returns 0 on success, 1 if NAME does not exist. |
2185 | 2189 |
2186 """ | 2190 """ |
2187 | 2191 |
2188 opts = pycompat.byteskwargs(opts) | 2192 opts = pycompat.byteskwargs(opts) |
2189 editopts = (b'edit', b'local', b'global', b'shared') | 2193 editopts = (b'edit', b'local', b'global', b'shared', b'non_shared') |
2190 if any(opts.get(o) for o in editopts): | 2194 if any(opts.get(o) for o in editopts): |
2191 cmdutil.check_at_most_one_arg(opts, *editopts[1:]) | 2195 cmdutil.check_at_most_one_arg(opts, *editopts[1:]) |
2192 if opts.get(b'local'): | 2196 if opts.get(b'local'): |
2193 if not repo: | 2197 if not repo: |
2194 raise error.Abort(_(b"can't use --local outside a repository")) | 2198 raise error.Abort(_(b"can't use --local outside a repository")) |
2206 b"share safe feature not unabled; " | 2210 b"share safe feature not unabled; " |
2207 b"unable to edit shared source repository config" | 2211 b"unable to edit shared source repository config" |
2208 ) | 2212 ) |
2209 ) | 2213 ) |
2210 paths = [vfsmod.vfs(repo.sharedpath).join(b'hgrc')] | 2214 paths = [vfsmod.vfs(repo.sharedpath).join(b'hgrc')] |
2215 elif opts.get(b'non_shared'): | |
2216 paths = [repo.vfs.join(b'hgrc-not-shared')] | |
2211 else: | 2217 else: |
2212 paths = rcutil.userrcpath() | 2218 paths = rcutil.userrcpath() |
2213 | 2219 |
2214 for f in paths: | 2220 for f in paths: |
2215 if os.path.exists(f): | 2221 if os.path.exists(f): |