##// END OF EJS Templates
dirstate: make parents() faster....
Bryan O'Sullivan -
r4373:abeb3edb default
parent child Browse files
Show More
@@ -20,6 +20,7 b' class dirstate(object):'
20 20 self.dirty = 0
21 21 self.ui = ui
22 22 self.map = None
23 self.fp = None
23 24 self.pl = None
24 25 self.dirs = None
25 26 self.copymap = {}
@@ -133,12 +134,28 b' class dirstate(object):'
133 134 self.lazyread()
134 135 return self[key]
135 136
137 _unknown = ('?', 0, 0, 0)
138
139 def get(self, key):
140 try:
141 return self[key]
142 except KeyError:
143 return self._unknown
144
136 145 def __contains__(self, key):
137 146 self.lazyread()
138 147 return key in self.map
139 148
140 149 def parents(self):
141 self.lazyread()
150 if self.pl is None:
151 self.pl = [nullid, nullid]
152 try:
153 self.fp = self.opener('dirstate')
154 st = self.fp.read(40)
155 if len(st) == 40:
156 self.pl = st[:20], st[20:40]
157 except IOError, err:
158 if err.errno != errno.ENOENT: raise
142 159 return self.pl
143 160
144 161 def branch(self):
@@ -202,7 +219,12 b' class dirstate(object):'
202 219 self.map = {}
203 220 self.pl = [nullid, nullid]
204 221 try:
205 st = self.opener("dirstate").read()
222 if self.fp:
223 self.fp.seek(0)
224 st = self.fp.read()
225 self.fp = None
226 else:
227 st = self.opener("dirstate").read()
206 228 if st:
207 229 self.parse(st)
208 230 except IOError, err:
General Comments 0
You need to be logged in to leave comments. Login now