diff -r d47b62368f3a -r 38a2b9d90131 mercurial/posix.py --- a/mercurial/posix.py Fri May 19 20:14:31 2017 -0700 +++ b/mercurial/posix.py Sun May 21 18:36:28 2017 -0400 @@ -244,7 +244,17 @@ # create a fixed file to link to; doesn't matter if it # already exists. target = 'checklink-target' - open(os.path.join(cachedir, target), 'w').close() + try: + open(os.path.join(cachedir, target), 'w').close() + except IOError as inst: + if inst[0] == errno.EACCES: + # If we can't write to cachedir, just pretend + # that the fs is readonly and by association + # that the fs won't support symlinks. This + # seems like the least dangerous way to avoid + # data loss. + return False + raise try: os.symlink(target, name) if cachedir is None: