--- a/mercurial/revlog.py Sun Dec 09 17:14:38 2007 +0900
+++ b/mercurial/revlog.py Tue Dec 18 14:01:42 2007 -0600
@@ -112,8 +112,6 @@
# lazyparser is not safe to use on windows if win32 extensions not
# available. it keeps file handle open, which make it not possible
# to break hardlinks on local cloned repos.
- safe_to_use = os.name != 'nt' or (not util.is_win_9x() and
- hasattr(util, 'win32api'))
def __init__(self, dataf, size):
self.dataf = dataf
@@ -362,7 +360,7 @@
except AttributeError:
size = 0
- if lazyparser.safe_to_use and not inline and size > 1000000:
+ if util.openhardlinks() and not inline and size > 1000000:
# big index, let's parse it on demand
parser = lazyparser(fp, size)
index = lazyindex(parser)
--- a/mercurial/util.py Sun Dec 09 17:14:38 2007 +0900
+++ b/mercurial/util.py Tue Dec 18 14:01:42 2007 -0600
@@ -772,12 +772,9 @@
posixfile = file
-def is_win_9x():
- '''return true if run on windows 95, 98 or me.'''
- try:
- return sys.getwindowsversion()[3] == 1
- except AttributeError:
- return os.name == 'nt' and 'command' in os.environ.get('comspec', '')
+def openhardlinks():
+ '''return true if it is safe to hold open file handles to hardlinks'''
+ return True
getuser_fallback = None
@@ -943,6 +940,16 @@
sys.stdout = winstdout(sys.stdout)
+ def _is_win_9x():
+ '''return true if run on windows 95, 98 or me.'''
+ try:
+ return sys.getwindowsversion()[3] == 1
+ except AttributeError:
+ return 'command' in os.environ.get('comspec', '')
+
+ def openhardlinks():
+ return not _is_win_9x and "win32api" in locals()
+
def system_rcpath():
try:
return system_rcpath_win32()
@@ -1074,7 +1081,7 @@
try:
# override functions with win32 versions if possible
from util_win32 import *
- if not is_win_9x():
+ if not _is_win_9x():
posixfile = posixfile_nt
except ImportError:
pass