[PATCH 1 of 4] config: don't read the same config file twice
Mads Kiilerich
mads at kiilerich.com
Fri Sep 26 12:11:11 CDT 2014
On 09/26/2014 03:25 AM, Pierre-Yves David wrote:
>
>
> On 09/25/2014 08:58 AM, Mads Kiilerich wrote:
>> On 09/25/2014 04:48 AM, Pierre-Yves David wrote:
>>>
>>>
>>> On 09/24/2014 06:33 PM, Mads Kiilerich wrote:
>>>> # HG changeset patch
>>>> # User Mads Kiilerich <madski at unity3d.com>
>>>> # Date 1409859395 -7200
>>>> # Thu Sep 04 21:36:35 2014 +0200
>>>> # Node ID e04d746df4b9a7c5ef32b0bf70284e3dd8402791
>>>> # Parent fa3181323c0aa9b2d2c2f81a7d68d57bd3a7a515
>>>> config: don't read the same config file twice
>>>>
>>>> In some cases some config files would be read twice and shown twice in
>>>> showconfig --debug.
>>>
>>> Can you details how the two changes fixes this bug? I'm curious.
>>>
>>>>
>>>> diff --git a/mercurial/scmposix.py b/mercurial/scmposix.py
>>>> --- a/mercurial/scmposix.py
>>>> +++ b/mercurial/scmposix.py
>>>> @@ -21,7 +21,8 @@ def systemrcpath():
>>>> # old mod_python does not set sys.argv
>>>> if len(getattr(sys, 'argv', [])) > 0:
>>>> p = os.path.dirname(os.path.dirname(sys.argv[0]))
>>>> - path.extend(_rcfiles(os.path.join(p, root)))
>>>> + if p != '/':
>>>> + path.extend(_rcfiles(os.path.join(p, root)))
>>>> path.extend(_rcfiles('/' + root))
>>
>> The same paths were added twice if p == '/'.
>
> Well, I already assumed that your changed this in relation with the
> patch description. But this does not explain how this double adding
> was happening.
>
well ... if os.path.dirname(os.path.dirname(sys.argv[0])) == '/' ...
which I guess can happen if hg is installed in /X/hg . As the confusing
documentation shows, we have several different rules for finding config
files. It is thus fair enough that they sometimes will give the same
result - in the same place in the priority list. No matter what cases
that is, there is no need to read the same twice.
In the other case it can happen if os.path.expanduser('~') ==
os.environ.get('USERPROFILE') - I have no idea when that can happen,
but it sounds plausible that it can happen, and if it happens then it
totally makes sense to only read the file once.
/Mads
More information about the Mercurial-devel
mailing list