Mercurial > public > mercurial-scm > hg
comparison mercurial/revlog.py @ 2250:45aef5ddcdbe
windows: revlog.lazyparser not always safe to use.
can not use on windows < nt or if win32 api not available.
author | Vadim Gelfer <vadim.gelfer@gmail.com> |
---|---|
date | Wed, 10 May 2006 11:10:18 -0700 |
parents | c9e264b115e6 |
children | 3f38e872f39a |
comparison
equal
deleted
inserted
replaced
2249:3e5fbf001f9b | 2250:45aef5ddcdbe |
---|---|
85 | 85 |
86 class lazyparser(object): | 86 class lazyparser(object): |
87 """ | 87 """ |
88 this class avoids the need to parse the entirety of large indices | 88 this class avoids the need to parse the entirety of large indices |
89 """ | 89 """ |
90 | |
91 # lazyparser is not safe to use on windows if win32 extensions not | |
92 # available. it keeps file handle open, which make it not possible | |
93 # to break hardlinks on local cloned repos. | |
94 safe_to_use = os.name != 'nt' or (not util.is_win_9x() and | |
95 hasattr(util, 'win32api')) | |
96 | |
90 def __init__(self, dataf, size, indexformat, shaoffset): | 97 def __init__(self, dataf, size, indexformat, shaoffset): |
91 self.dataf = dataf | 98 self.dataf = dataf |
92 self.format = indexformat | 99 self.format = indexformat |
93 self.s = struct.calcsize(indexformat) | 100 self.s = struct.calcsize(indexformat) |
94 self.indexformat = indexformat | 101 self.indexformat = indexformat |
360 else: | 367 else: |
361 self.indexformat = indexformatng | 368 self.indexformat = indexformatng |
362 shaoffset = ngshaoffset | 369 shaoffset = ngshaoffset |
363 | 370 |
364 if i: | 371 if i: |
365 if not self.inlinedata() and st and st.st_size > 10000: | 372 if (lazyparser.safe_to_use and not self.inlinedata() and |
373 st and st.st_size > 10000): | |
366 # big index, let's parse it on demand | 374 # big index, let's parse it on demand |
367 parser = lazyparser(f, st.st_size, self.indexformat, shaoffset) | 375 parser = lazyparser(f, st.st_size, self.indexformat, shaoffset) |
368 self.index = lazyindex(parser) | 376 self.index = lazyindex(parser) |
369 self.nodemap = lazymap(parser) | 377 self.nodemap = lazymap(parser) |
370 else: | 378 else: |