[PATCH 2 of 3] util.makedirs: make recursion simpler and more stable (issue2948)

Adrian Buehlmann adrian at cadifra.com
Mon Aug 22 02:24:47 CDT 2011


On 2011-08-22 09:10, Adrian Buehlmann wrote:
> On 2011-08-22 01:07, Mads Kiilerich wrote:
>> # HG changeset patch
>> # User Mads Kiilerich <mads at kiilerich.com>
>> # Date 1313966558 -7200
>> # Branch stable
>> # Node ID 4191b702114a9bb2b6287ce622060589763ac038
>> # Parent  b2881a5ceecc79052c48103eeb04d3d4d02ee3ee
>> util.makedirs: make recursion simpler and more stable (issue2948)
>>
>> Before, makedirs could call itself recursively with the same path name it was
>> given, relying on sane file system behavior to terminate the recursion. That
>> could cause infinite recursion on insane file systems.
>>
>> Instead we now call mkdir explicitly after having created parent directory
>> recursively. Exceptions from this mkdir is not swallowed.
>>
>> diff --git a/mercurial/util.py b/mercurial/util.py
>> --- a/mercurial/util.py
>> +++ b/mercurial/util.py
>> @@ -766,7 +766,7 @@
>>          if not name or parent == name or err.errno != errno.ENOENT:
>>              raise
>>          makedirs(parent, mode)
>> -        makedirs(name, mode)
>> +        os.mkdir(name)
>>      if mode is not None:
>>          os.chmod(name, mode)
> 
> +1
> Ageed.

Should be "Agreed", obviously. Sorry.



More information about the Mercurial-devel mailing list