Show More
@@ -79,6 +79,7 b' class localrepository(repo.repository):' | |||||
79 | self.revlogversion = v |
|
79 | self.revlogversion = v | |
80 |
|
80 | |||
81 | self.tagscache = None |
|
81 | self.tagscache = None | |
|
82 | self.branchcache = None | |||
82 | self.nodetagscache = None |
|
83 | self.nodetagscache = None | |
83 | self.encodepats = None |
|
84 | self.encodepats = None | |
84 | self.decodepats = None |
|
85 | self.decodepats = None | |
@@ -288,6 +289,44 b' class localrepository(repo.repository):' | |||||
288 | self.nodetagscache.setdefault(n, []).append(t) |
|
289 | self.nodetagscache.setdefault(n, []).append(t) | |
289 | return self.nodetagscache.get(node, []) |
|
290 | return self.nodetagscache.get(node, []) | |
290 |
|
291 | |||
|
292 | def branchtags(self): | |||
|
293 | if self.branchcache != None: | |||
|
294 | return self.branchcache | |||
|
295 | ||||
|
296 | self.branchcache = {} | |||
|
297 | ||||
|
298 | try: | |||
|
299 | f = self.opener("branches.cache") | |||
|
300 | last, lrev = f.readline().rstrip().split(" ", 1) | |||
|
301 | last, lrev = bin(last), int(lrev) | |||
|
302 | if self.changelog.node(lrev) == last: # sanity check | |||
|
303 | for l in f: | |||
|
304 | node, label = l.rstrip().split(" ", 1) | |||
|
305 | self.branchcache[label] = bin(node) | |||
|
306 | f.close() | |||
|
307 | except IOError: | |||
|
308 | last, lrev = nullid, -1 | |||
|
309 | lrev = self.changelog.rev(last) | |||
|
310 | ||||
|
311 | tip = self.changelog.count() - 1 | |||
|
312 | if lrev != tip: | |||
|
313 | for r in range(lrev + 1, tip + 1): | |||
|
314 | n = self.changelog.node(r) | |||
|
315 | c = self.changelog.read(n) | |||
|
316 | b = c[5].get("branch") | |||
|
317 | if b: | |||
|
318 | self.branchcache[b] = n | |||
|
319 | self._writebranchcache() | |||
|
320 | ||||
|
321 | return self.branchcache | |||
|
322 | ||||
|
323 | def _writebranchcache(self): | |||
|
324 | f = self.opener("branches.cache", "w") | |||
|
325 | t = self.changelog.tip() | |||
|
326 | f.write("%s %s\n" % (hex(t), self.changelog.count() - 1)) | |||
|
327 | for label, node in self.branchcache.iteritems(): | |||
|
328 | f.write("%s %s\n" % (hex(node), label)) | |||
|
329 | ||||
291 | def lookup(self, key): |
|
330 | def lookup(self, key): | |
292 | try: |
|
331 | try: | |
293 | return self.tags()[key] |
|
332 | return self.tags()[key] |
General Comments 0
You need to be logged in to leave comments.
Login now