[PATCH] When applying a git diff, ensure that the target dir exists for new files

Stefan Rusek stefan at rusek.org
Thu Dec 11 06:36:44 CST 2008


Should I make that change and resubmit the diff?

On Wed, Dec 10, 2008 at 12:03 AM, Stefan Rusek <stefan at rusek.org> wrote:
>>>
>>> -    if not os.path.isdir(basedir):
>>> -        os.makedirs(basedir)
>>> +    dstdir = os.path.dirname(absdst)
>>> +    if dstdir and not os.path.exists(dstdir):
>>
>> Any reason to prefer os.path.exists() to isdir() here ? I prefer the latter, makedirs() is likely to die sooner and for more obvious reasons.
>> Otherwise the patch is good for me, and I have a test ready.
>>
>>> +        os.makedirs(dstdir)
>>>
>
> Here are the two error messages (on windows)
> makdirs - "The system cannot find the path specified: <badpath>"
> copyfile - "No such file or directory: <badpath>"
>
> So they both give the same error, though makdirs gives a complete
> sentence, neither is a useful error message. Maybe it should do this:
>
> if dstdir and not os.path.isdir(dstdir):
>  try:
>    os.makedirs(dstdir)
>  except:
>    raise util.Abort(_("cannot create %s: unable to create destination
> directory") % dst)
>
> This way the user gets a shove in the right direction.
>


More information about the Mercurial-devel mailing list