[PATCH 1 of 3 STABLE] util: add utility function to skip avoiding file stat ambiguity if EPERM

Yuya Nishihara yuya at tcha.org
Mon Nov 14 08:43:04 EST 2016


On Sun, 13 Nov 2016 06:16:08 +0900, FUJIWARA Katsunori wrote:
> # HG changeset patch
> # User FUJIWARA Katsunori <foozy at lares.dti.ne.jp>
> # Date 1478984783 -32400
> #      Sun Nov 13 06:06:23 2016 +0900
> # Branch stable
> # Node ID b496a464399cb68628b09e52aa8cf379c98428e6
> # Parent  4ed8bb8a153f91420777d98dea10ebbcd403a375
> util: add utility function to skip avoiding file stat ambiguity if EPERM

The series looks good to me. I found a nit, but it isn't important. I'll
push the patches tomorrow if there are no other comments.

> --- a/mercurial/util.py
> +++ b/mercurial/util.py
> @@ -1497,6 +1497,24 @@ class filestat(object):
>          except AttributeError:
>              return False
>  
> +    def avoidambig(self, path, old):
> +        """Change file stat of specified path to avoid ambiguity
> +
> +        'old' should be previous filestat of 'path'.
> +
> +        This skips avoiding ambiguity, if a process doesn't have
> +        appropriate privileges for 'path'.
> +        """
> +        advanced = (old.stat.st_mtime + 1) & 0x7fffffff
> +        try:
> +            os.utime(path, (advanced, advanced))
> +        except OSError as inst:
> +            if inst.errno == errno.EPERM:
> +                # utime() on the file created by another user causes EPERM,
> +                # if a process doesn't have appropriate privileges
> +                return
> +            raise

avoidambig() has no relation to self, which requires path and old filestat as
arguments. So I don't think it should be a method of filestat class.


More information about the Mercurial-devel mailing list