Mercurial > public > mercurial-scm > hg
comparison mercurial/changelog.py @ 9163:f193b643d1b1
changelog: _delaycount -> _divert
author | Matt Mackall <mpm@selenic.com> |
---|---|
date | Sat, 18 Jul 2009 11:25:54 -0500 |
parents | c5f36402daad |
children | b0d995b6b0a6 |
comparison
equal
deleted
inserted
replaced
9154:47ce7a3a1fb0 | 9163:f193b643d1b1 |
---|---|
89 | 89 |
90 class changelog(revlog.revlog): | 90 class changelog(revlog.revlog): |
91 def __init__(self, opener): | 91 def __init__(self, opener): |
92 self._realopener = opener | 92 self._realopener = opener |
93 self._delayed = False | 93 self._delayed = False |
94 self._divert = False | |
94 revlog.revlog.__init__(self, self._delayopener, "00changelog.i") | 95 revlog.revlog.__init__(self, self._delayopener, "00changelog.i") |
96 | |
95 | 97 |
96 def delayupdate(self): | 98 def delayupdate(self): |
97 "delay visibility of index updates to other readers" | 99 "delay visibility of index updates to other readers" |
98 self._delayed = True | 100 self._delayed = True |
99 self._delaycount = len(self) | 101 self._divert = (len(self) == 0) |
100 self._delaybuf = [] | 102 self._delaybuf = [] |
101 self._delayname = None | 103 self._delayname = None |
102 | 104 |
103 def finalize(self, tr): | 105 def finalize(self, tr): |
104 "finalize index updates" | 106 "finalize index updates" |
118 fp = self._realopener(name, mode) | 120 fp = self._realopener(name, mode) |
119 # only divert the index | 121 # only divert the index |
120 if not self._delayed or not name == self.indexfile: | 122 if not self._delayed or not name == self.indexfile: |
121 return fp | 123 return fp |
122 # if we're doing an initial clone, divert to another file | 124 # if we're doing an initial clone, divert to another file |
123 if self._delaycount == 0: | 125 if self._divert: |
124 self._delayname = fp.name | 126 self._delayname = fp.name |
125 if not len(self): | 127 if not len(self): |
126 # make sure to truncate the file | 128 # make sure to truncate the file |
127 mode = mode.replace('a', 'w') | 129 mode = mode.replace('a', 'w') |
128 return self._realopener(name + ".a", mode) | 130 return self._realopener(name + ".a", mode) |