Mercurial > public > mercurial-scm > hg-stable
comparison mercurial/revlog.py @ 8315:c8493310ad9b
revlog: use index to find index size
author | Matt Mackall <mpm@selenic.com> |
---|---|
date | Thu, 07 May 2009 19:39:45 -0500 |
parents | 57a41c08feab |
children | d593922cf480 |
comparison
equal
deleted
inserted
replaced
8314:57a41c08feab | 8315:c8493310ad9b |
---|---|
996 | 996 |
997 self._cache = (node, rev, text) | 997 self._cache = (node, rev, text) |
998 return text | 998 return text |
999 | 999 |
1000 def checkinlinesize(self, tr, fp=None): | 1000 def checkinlinesize(self, tr, fp=None): |
1001 if not self._inline: | 1001 if not self._inline or (self.start(-2) + self.length(-2)) < 131072: |
1002 return | 1002 return |
1003 if not fp: | 1003 |
1004 fp = self.opener(self.indexfile, 'r') | |
1005 fp.seek(0, 2) | |
1006 size = fp.tell() | |
1007 if size < 131072: | |
1008 return | |
1009 trinfo = tr.find(self.indexfile) | 1004 trinfo = tr.find(self.indexfile) |
1010 if trinfo == None: | 1005 if trinfo == None: |
1011 raise RevlogError(_("%s not found in the transaction") | 1006 raise RevlogError(_("%s not found in the transaction") |
1012 % self.indexfile) | 1007 % self.indexfile) |
1013 | 1008 |
1014 trindex = trinfo[2] | 1009 trindex = trinfo[2] |
1015 dataoff = self.start(trindex) | 1010 dataoff = self.start(trindex) |
1016 | 1011 |
1017 tr.add(self.datafile, dataoff) | 1012 tr.add(self.datafile, dataoff) |
1013 | |
1014 if not fp: | |
1015 fp = self.opener(self.indexfile, 'r') | |
1016 | |
1018 df = self.opener(self.datafile, 'w') | 1017 df = self.opener(self.datafile, 'w') |
1019 try: | 1018 try: |
1020 calc = self._io.size | 1019 calc = self._io.size |
1021 for r in self: | 1020 for r in self: |
1022 start = self.start(r) + (r + 1) * calc | 1021 start = self.start(r) + (r + 1) * calc |