From patchwork Tue Jul 31 12:22:30 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [STABLE, RESEND] fileset: suppress EACCES while reading arbitrary paths via filectx API From: Yuya Nishihara X-Patchwork-Id: 32979 Message-Id: To: mercurial-devel@mercurial-scm.org Date: Tue, 31 Jul 2018 21:22:30 +0900 # HG changeset patch # User Yuya Nishihara # Date 1532849151 -32400 # Sun Jul 29 16:25:51 2018 +0900 # Branch stable # Node ID a4c9d951bfa7c55ed23f481e066a21fd51f63946 # Parent 545a3e6650cd8f7e19c0f0256082837a33bea029 fileset: suppress EACCES while reading arbitrary paths via filectx API On Windows, EACCES is raised in place of EISDIR. This patch simply adds EACCES to the list of errors to be ignored since I think it's okay for filesets to treat inaccessible working-copy files as not existing. diff --git a/mercurial/fileset.py b/mercurial/fileset.py --- a/mercurial/fileset.py +++ b/mercurial/fileset.py @@ -592,7 +592,9 @@ class matchctx(object): try: return predfn(fctx) except (IOError, OSError) as e: - if e.errno in (errno.ENOENT, errno.ENOTDIR, errno.EISDIR): + # open()-ing a directory fails with EACCES on Windows + if e.errno in (errno.ENOENT, errno.EACCES, errno.ENOTDIR, + errno.EISDIR): return False raise else: