diff --git a/mercurial/bookmarks.py b/mercurial/bookmarks.py --- a/mercurial/bookmarks.py +++ b/mercurial/bookmarks.py @@ -138,6 +138,14 @@ class bmstore(object): self._clean = False del self._refmap[key] + def names(self, node): + """Return a sorted list of bookmarks pointing to the specified node""" + marks = [] + for m, n in self._refmap.iteritems(): + if n == node: + marks.append(m) + return sorted(marks) + def changectx(self, mark): node = self._refmap[mark] return self._repo[node] diff --git a/mercurial/localrepo.py b/mercurial/localrepo.py --- a/mercurial/localrepo.py +++ b/mercurial/localrepo.py @@ -1029,11 +1029,7 @@ class localrepository(object): def nodebookmarks(self, node): """return the list of bookmarks pointing to the specified node""" - marks = [] - for bookmark, n in self._bookmarks.iteritems(): - if n == node: - marks.append(bookmark) - return sorted(marks) + return self._bookmarks.names(node) def branchmap(self): '''returns a dictionary {branch: [branchheads]} with branchheads