diff -r b21c2e0ee8a3 -r 4e451d1359de mercurial/util.py --- a/mercurial/util.py Thu Jan 15 16:51:13 2015 -0800 +++ b/mercurial/util.py Mon Jan 05 12:39:09 2015 -0800 @@ -716,10 +716,16 @@ return check -def copyfile(src, dest): +def copyfile(src, dest, hardlink=False): "copy a file, preserving mode and atime/mtime" if os.path.lexists(dest): unlink(dest) + if hardlink: + try: + oslink(src, dest) + return + except (IOError, OSError): + pass # fall back to normal copy if os.path.islink(src): os.symlink(os.readlink(src), dest) else: