Mercurial > hg
changeset 48686:4507bc001365
obsolete: make sure windows tests pass when stat() is given a URL
This is a temporary fix for an issue that's only visible on windows, but exists
on other platforms as well.
The issue is if we're trying to use obsstore from a remote peer and that peer
is a static HTTP repo, vfs tries to os.stat() a remote file using a URL to that
file (e.g. http://localhost/repo/.hg/store/obsstore). The next patch in this
series makes branchcache obsolescence-aware, so in certain situations exchange
process will try os.stat()ing a URL. On windows this will produce an OSError
that is not ENOENT, but EINVAL instead (because of `:` symbol, for example).
Differential Revision: https://phab.mercurial-scm.org/D12100
author | Anton Shestakov <av6@dwimlabs.net> |
---|---|
date | Fri, 28 Jan 2022 19:07:52 +0300 |
parents | 21ac6aedd5e5 |
children | f8f2ecdde4b5 |
files | mercurial/obsolete.py |
diffstat | 1 files changed, 1 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/obsolete.py Mon Jan 31 18:38:15 2022 +0100 +++ b/mercurial/obsolete.py Fri Jan 28 19:07:52 2022 +0300 @@ -583,7 +583,7 @@ try: return self.svfs.stat(b'obsstore').st_size > 1 except OSError as inst: - if inst.errno != errno.ENOENT: + if inst.errno not in (errno.ENOENT, errno.EINVAL): raise # just build an empty _all list if no obsstore exists, which # avoids further stat() syscalls