[PATCH STABLE] checkexec: create destination directory if necessary

Yuya Nishihara yuya at tcha.org
Fri Nov 16 23:14:00 EST 2018


On Thu, 15 Nov 2018 11:48:51 +0100, Boris Feld wrote:
> # HG changeset patch
> # User Boris Feld <boris.feld at octobus.net>
> # Date 1542247763 -3600
> #      Thu Nov 15 03:09:23 2018 +0100
> # Branch stable
> # Node ID 99a25b3b768a6434c09f66f6980ac76de0245366
> # Parent  e5f54c4ec075f28770ae16619a839e6431df0935
> # EXP-Topic wcache
> # Available At https://bitbucket.org/octobus/mercurial-devel/
> #              hg pull https://bitbucket.org/octobus/mercurial-devel/ -r 99a25b3b768a
> checkexec: create destination directory if necessary

> --- a/mercurial/posix.py
> +++ b/mercurial/posix.py
> @@ -181,7 +181,15 @@ def checkexec(path):
>  
>      try:
>          EXECFLAGS = stat.S_IXUSR | stat.S_IXGRP | stat.S_IXOTH
> -        cachedir = os.path.join(path, '.hg', 'cache')
> +        basedir = os.path.join(path, '.hg')
> +        cachedir = os.path.join(basedir, 'cache')
> +        if not os.path.exists(cachedir):
> +            try:
> +                os.mkdir(cachedir)

This handles the case where '.hg' directory doesn't exist. Can you add inline
comment so we won't change it to os.makedirs() by mistake?

> +                copymode(basedir, cachedir)

It disagree with the inline comment. The permission of the cache directory
has to be inherited from the store, not from the .hg directory.

> --- a/tests/test-inherit-mode.t
> +++ b/tests/test-inherit-mode.t
> @@ -67,8 +67,11 @@ new directories are setgid
>    $ "$PYTHON" ../printmodes.py .
>    00700 ./.hg/
>    00600 ./.hg/00changelog.i
> -  00770 ./.hg/cache/
> +  00700 ./.hg/cache/


More information about the Mercurial-devel mailing list