comparison mercurial/subrepoutil.py @ 45208:f7f142d74df3

config: pass both relative and absolute paths to `include` callback The `include` callback is responsible for loading configs from `%include` statements. The callback currently gets passed the absolute path [1] to the config to read. That is created by joining the dirname of the file that contains the `%include` statement. For PyOxidizer support, I'm trying to reduce dependence on paths. This patch helps with that by passing the relative path found in the `%include` statement (but with username expansion, etc.) to the `include` callback. It also turns out that the existing callers can easily adapt to using the relative path. Coming patches will clean that up and then we'll remove the absolute path from the callback. [1] The "absolute path" bit is a bit of a lie -- it's going to be an absolute path if the path that was passed into `config.parse()` was absolute. Differential Revision: https://phab.mercurial-scm.org/D8790
author Martin von Zweigbergk <martinvonz@google.com>
date Tue, 21 Jul 2020 23:50:42 -0700
parents d783f945a701
children 0323972f78f3
comparison
equal deleted inserted replaced
45207:4489e9a22763 45208:f7f142d74df3
34 (key in types dict)) 34 (key in types dict))
35 """ 35 """
36 p = config.config() 36 p = config.config()
37 repo = ctx.repo() 37 repo = ctx.repo()
38 38
39 def read(f, sections=None, remap=None): 39 def read(rel, f, sections=None, remap=None):
40 if f in ctx: 40 if f in ctx:
41 try: 41 try:
42 data = ctx[f].data() 42 data = ctx[f].data()
43 except IOError as err: 43 except IOError as err:
44 if err.errno != errno.ENOENT: 44 if err.errno != errno.ENOENT:
54 raise error.Abort( 54 raise error.Abort(
55 _(b"subrepo spec file \'%s\' not found") % repo.pathto(f) 55 _(b"subrepo spec file \'%s\' not found") % repo.pathto(f)
56 ) 56 )
57 57
58 if b'.hgsub' in ctx: 58 if b'.hgsub' in ctx:
59 read(b'.hgsub') 59 read(b'.hgsub', b'.hgsub')
60 60
61 for path, src in ui.configitems(b'subpaths'): 61 for path, src in ui.configitems(b'subpaths'):
62 p.set(b'subpaths', path, src, ui.configsource(b'subpaths', path)) 62 p.set(b'subpaths', path, src, ui.configsource(b'subpaths', path))
63 63
64 rev = {} 64 rev = {}