##// 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 self.dirty = 0
20 self.dirty = 0
21 self.ui = ui
21 self.ui = ui
22 self.map = None
22 self.map = None
23 self.fp = None
23 self.pl = None
24 self.pl = None
24 self.dirs = None
25 self.dirs = None
25 self.copymap = {}
26 self.copymap = {}
@@ -133,12 +134,28 b' class dirstate(object):'
133 self.lazyread()
134 self.lazyread()
134 return self[key]
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 def __contains__(self, key):
145 def __contains__(self, key):
137 self.lazyread()
146 self.lazyread()
138 return key in self.map
147 return key in self.map
139
148
140 def parents(self):
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 return self.pl
159 return self.pl
143
160
144 def branch(self):
161 def branch(self):
@@ -202,7 +219,12 b' class dirstate(object):'
202 self.map = {}
219 self.map = {}
203 self.pl = [nullid, nullid]
220 self.pl = [nullid, nullid]
204 try:
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 if st:
228 if st:
207 self.parse(st)
229 self.parse(st)
208 except IOError, err:
230 except IOError, err:
General Comments 0
You need to be logged in to leave comments. Login now