Mercurial > public > mercurial-scm > hg-stable
diff mercurial/posix.py @ 27236:b0d90fef16b6
posix: work around "posix" systems without os.link available (issue4974)
Some platforms (see bug, notably a terminal emulator on Android) ship
with os.link removed from Python to try and cater to other tools that
expect os.link to exist iff hardlinks are supported on that
platform. As a workaround for this madness, include a fallback path
for when we're on a "posix" platform but lack os.link.
author | Augie Fackler <augie@google.com> |
---|---|
date | Fri, 04 Dec 2015 15:59:46 -0500 |
parents | 0e3d093c468e |
children | c220434a3461 |
line wrap: on
line diff
--- a/mercurial/posix.py Thu Dec 03 13:14:20 2015 -0800 +++ b/mercurial/posix.py Fri Dec 04 15:59:46 2015 -0500 @@ -29,7 +29,16 @@ posixfile = open normpath = os.path.normpath samestat = os.path.samestat -oslink = os.link +try: + oslink = os.link +except AttributeError: + # Some platforms build Python without os.link on systems that are + # vaguely unix-like but don't have hardlink support. For those + # poor souls, just say we tried and that it failed so we fall back + # to copies. + def oslink(src, dst): + raise OSError(errno.EINVAL, + 'hardlinks not supported: %s to %s' % (src, dst)) unlink = os.unlink rename = os.rename removedirs = os.removedirs