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)