Mercurial > hg-stable
changeset 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 | 054cd38a2f19 |
children | c08814b48ae5 |
files | mercurial/posix.py |
diffstat | 1 files changed, 10 insertions(+), 1 deletions(-) [+] |
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