equal
deleted
inserted
replaced
396 |
396 |
397 return cache |
397 return cache |
398 |
398 |
399 def tags(self): |
399 def tags(self): |
400 '''return a mapping of tag to node''' |
400 '''return a mapping of tag to node''' |
401 return self._tagscache.tags |
401 t = {} |
|
402 for k, v in self._tagscache.tags.iteritems(): |
|
403 try: |
|
404 # ignore tags to unknown nodes |
|
405 self.changelog.rev(v) |
|
406 t[k] = v |
|
407 except error.LookupError: |
|
408 pass |
|
409 return t |
402 |
410 |
403 def _findtags(self): |
411 def _findtags(self): |
404 '''Do the hard work of finding tags. Return a pair of dicts |
412 '''Do the hard work of finding tags. Return a pair of dicts |
405 (tags, tagtypes) where tags maps tag name to node, and tagtypes |
413 (tags, tagtypes) where tags maps tag name to node, and tagtypes |
406 maps tag name to a string like \'global\' or \'local\'. |
414 maps tag name to a string like \'global\' or \'local\'. |
425 # writing to the cache), but the rest of Mercurial wants them in |
433 # writing to the cache), but the rest of Mercurial wants them in |
426 # local encoding. |
434 # local encoding. |
427 tags = {} |
435 tags = {} |
428 for (name, (node, hist)) in alltags.iteritems(): |
436 for (name, (node, hist)) in alltags.iteritems(): |
429 if node != nullid: |
437 if node != nullid: |
430 try: |
438 tags[encoding.tolocal(name)] = node |
431 # ignore tags to unknown nodes |
|
432 self.changelog.lookup(node) |
|
433 tags[encoding.tolocal(name)] = node |
|
434 except error.LookupError: |
|
435 pass |
|
436 tags['tip'] = self.changelog.tip() |
439 tags['tip'] = self.changelog.tip() |
437 tagtypes = dict([(encoding.tolocal(name), value) |
440 tagtypes = dict([(encoding.tolocal(name), value) |
438 for (name, value) in tagtypes.iteritems()]) |
441 for (name, value) in tagtypes.iteritems()]) |
439 return (tags, tagtypes) |
442 return (tags, tagtypes) |
440 |
443 |
462 |
465 |
463 def nodetags(self, node): |
466 def nodetags(self, node): |
464 '''return the tags associated with a node''' |
467 '''return the tags associated with a node''' |
465 if not self._tagscache.nodetagscache: |
468 if not self._tagscache.nodetagscache: |
466 nodetagscache = {} |
469 nodetagscache = {} |
467 for t, n in self.tags().iteritems(): |
470 for t, n in self._tagscache.tags.iteritems(): |
468 nodetagscache.setdefault(n, []).append(t) |
471 nodetagscache.setdefault(n, []).append(t) |
469 for tags in nodetagscache.itervalues(): |
472 for tags in nodetagscache.itervalues(): |
470 tags.sort() |
473 tags.sort() |
471 self._tagscache.nodetagscache = nodetagscache |
474 self._tagscache.nodetagscache = nodetagscache |
472 return self._tagscache.nodetagscache.get(node, []) |
475 return self._tagscache.nodetagscache.get(node, []) |