Thu, 19 Aug 2010 23:13:20 +0200 Merge with stable
Patrick Mezard <pmezard@gmail.com> [Thu, 19 Aug 2010 23:13:20 +0200] rev 11993
Merge with stable
Thu, 19 Aug 2010 22:51:09 +0200 win32: remove useless lstat() fallback in nlinks() stable
Patrick Mezard <pmezard@gmail.com> [Thu, 19 Aug 2010 22:51:09 +0200] rev 11992
win32: remove useless lstat() fallback in nlinks() The fallback was introduced by 3b4f05ff3130 at the same time than nlinks(). Apparently it only handles the case where target path does not exist. Just raise IOError directly.
Thu, 19 Aug 2010 22:51:09 +0200 win32: correctly break hardlinks on network drives (issue761) stable
Patrick Mezard <pmezard@gmail.com> [Thu, 19 Aug 2010 22:51:09 +0200] rev 11991
win32: correctly break hardlinks on network drives (issue761) win32.nlinks() was often returning 1 instead of the correct hardlinks count when reading from network drives. This made commit or push to a repository on a network share to fail breaking the hardlinks in the datastore, possibly causing integrity errors in repositories linked locally on the remote side. Here is what the MSDN says about GetFileInformationByHandle(): Depending on the underlying network features of the operating system and the type of server connected to, the GetFileInformationByHandle function may fail, return partial information, or full information for the given file. In practice, we never got the correct hardlinks count when reading from and to many combinations of Window XP, 2003, Vista and 7, via network drives or RDP shares. It always returned 1 instead. The only setup returning an accurate links count was a samba on Debian. To avoid this, Mercurial now breaks the hardlinks unconditionally when writing to a network drive.
(0) -10000 -3000 -1000 -300 -100 -30 -10 -3 +3 +10 +30 +100 +300 +1000 +3000 +10000 +30000 tip