Comments
Patch
@@ -698,10 +698,38 @@ class localrepository(object):
if name is not None:
return self._markers[namespace][name]
return self._markers[namespace]
+ def nodemarkers(self, node, namespace=None):
+ '''Return all markers (sorted) associated with a node optionally filtered by
+ namespace.
+
+ If namespace is passed, then this will return a sorted list of just the
+ names.
+ '''
+
+ # can't use a dictioniary because the result need to be sorted
+ nm = []
+ if namespace is None:
+ # singular name
+ nm.extend((b, 'bookmark') for b in self.nodebookmarks(node))
+ nm.extend((t, 'tag') for t in self.nodetags(node))
+
+ for marktype, data in self._markers.iteritems():
+ nm.extend((name, marktype) for name, n in data.iteritems()
+ if n == node)
+
+ # sort by type of mark, then by name
+ nm = sorted(nm, key=lambda tup: (tup[1], tup[0]))
+ else:
+ nm.extend(name for name, n in self.markers(namespace).iteritems()
+ if n == node)
+ nm = sorted(nm)
+
+ return nm
+
def branchmap(self):
'''returns a dictionary {branch: [branchheads]} with branchheads
ordered by increasing revision number'''
branchmap.updatecache(self)
return self._branchcaches[self.filtername]