##// END OF EJS Templates
phabricator: use .arcconfig for the callsign if not set locally (issue6243)...
Matt Harbison -
r44586:59b3fe1e default
parent child Browse files
Show More
@@ -66,6 +66,7 b' from mercurial import ('
66 66 exthelper,
67 67 graphmod,
68 68 httpconnection as httpconnectionmod,
69 localrepo,
69 70 logcmdutil,
70 71 match,
71 72 mdiff,
@@ -101,6 +102,7 b' cmdtable = eh.cmdtable'
101 102 command = eh.command
102 103 configtable = eh.configtable
103 104 templatekeyword = eh.templatekeyword
105 uisetup = eh.finaluisetup
104 106
105 107 # developer config: phabricator.batchsize
106 108 eh.configitem(
@@ -152,6 +154,39 b' colortable = {'
152 154 ]
153 155
154 156
157 @eh.wrapfunction(localrepo, "loadhgrc")
158 def _loadhgrc(orig, ui, wdirvfs, hgvfs, requirements):
159 """Load ``.arcconfig`` content into a ui instance on repository open.
160 """
161 result = False
162 arcconfig = {}
163
164 try:
165 # json.loads only accepts bytes from 3.6+
166 rawparams = encoding.unifromlocal(wdirvfs.read(b".arcconfig"))
167 # json.loads only returns unicode strings
168 arcconfig = pycompat.rapply(
169 lambda x: encoding.unitolocal(x)
170 if isinstance(x, pycompat.unicode)
171 else x,
172 pycompat.json_loads(rawparams),
173 )
174
175 result = True
176 except ValueError:
177 ui.warn(_(b"invalid JSON in %s\n") % wdirvfs.join(b".arcconfig"))
178 except IOError:
179 pass
180
181 if b"repository.callsign" in arcconfig:
182 ui.applyconfig(
183 {(b"phabricator", b"callsign"): arcconfig[b"repository.callsign"]},
184 source=wdirvfs.join(b".arcconfig"),
185 )
186
187 return orig(ui, wdirvfs, hgvfs, requirements) or result # Load .hg/hgrc
188
189
155 190 def vcrcommand(name, flags, spec, helpcategory=None, optionalrepo=False):
156 191 fullflags = flags + _VCR_FLAGS
157 192
@@ -210,5 +210,37 b' Phabreading a DREV with a local:commits '
210 210 extensions.loadall(self.ui)
211 211
212 212
213 A bad .arcconfig doesn't error out
214 $ echo 'garbage' > .arcconfig
215 $ hg config phabricator --debug
216 invalid JSON in $TESTTMP/repo/.arcconfig
217 read config from: */.hgrc (glob)
218 $TESTTMP/repo/.hg/hgrc:*: phabricator.url=https://phab.mercurial-scm.org/ (glob)
219 $TESTTMP/repo/.hg/hgrc:*: phabricator.callsign=HG (glob)
220
221 The .arcconfig content overrides global config
222 $ cat >> $HGRCPATH << EOF
223 > [phabricator]
224 > url = global
225 > callsign = global
226 > EOF
227 $ cp $TESTDIR/../.arcconfig .
228 $ mv .hg/hgrc .hg/hgrc.bak
229 $ hg config phabricator --debug
230 read config from: */.hgrc (glob)
231 */.hgrc:*: phabricator.url=global (glob)
232 $TESTTMP/repo/.arcconfig: phabricator.callsign=HG
233
234 But it doesn't override local config
235 $ cat >> .hg/hgrc << EOF
236 > [phabricator]
237 > url = local
238 > callsign = local
239 > EOF
240 $ hg config phabricator --debug
241 read config from: */.hgrc (glob)
242 $TESTTMP/repo/.hg/hgrc:*: phabricator.url=local (glob)
243 $TESTTMP/repo/.hg/hgrc:*: phabricator.callsign=local (glob)
244 $ mv .hg/hgrc.bak .hg/hgrc
213 245
214 246 $ cd ..
General Comments 0
You need to be logged in to leave comments. Login now