# HG changeset patch # User Augie Fackler # Date 2019-09-25 21:57:16 # Node ID e3bb2a58af1e19dda1b6a31fd4a80ec87bc81311 # Parent 699102b1053054d32bc9b0d0e8aeb699c20765d2 bookmarks: remove changectx() method from bmstore (API) All the callsites of this method have access to the repo, and I'd rather not have to duplicate this across alternative bmstore implementations. Besides, it feels like a bit of a layering violation. .. api:: `mercurial.bookmarks.bmstore` no longer has a convenience method for looking up changectx instances from a bookmark name. Use `repo[repo.bookmarks[name]]` intead of `repo.bookmarks.changectx(name)`. Differential Revision: https://phab.mercurial-scm.org/D6884 diff --git a/hgext/infinitepush/bundleparts.py b/hgext/infinitepush/bundleparts.py --- a/hgext/infinitepush/bundleparts.py +++ b/hgext/infinitepush/bundleparts.py @@ -12,6 +12,7 @@ from mercurial import ( changegroup, error, extensions, + node as nodemod, revsetlang, util, ) @@ -48,7 +49,7 @@ def getscratchbranchparts(repo, peer, ou params['bookprevnode'] = '' bookmarks = repo._bookmarks if bookmark in bookmarks: - params['bookprevnode'] = bookmarks.changectx(bookmark).hex() + params['bookprevnode'] = nodemod.hex(bookmarks[bookmark]) # Do not send pushback bundle2 part with bookmarks if remotenames extension # is enabled. It will be handled manually in `_push()` diff --git a/mercurial/bookmarks.py b/mercurial/bookmarks.py --- a/mercurial/bookmarks.py +++ b/mercurial/bookmarks.py @@ -177,10 +177,6 @@ class bmstore(object): """Return a sorted list of bookmarks pointing to the specified node""" return self._nodemap.get(node, []) - def changectx(self, mark): - node = self._refmap[mark] - return self._repo[node] - def applychanges(self, repo, tr, changes): """Apply a list of changes to bookmarks """ @@ -271,7 +267,7 @@ class bmstore(object): return [] rev = self._repo[target].rev() anc = self._repo.changelog.ancestors([rev]) - bmctx = self.changectx(mark) + bmctx = self._repo[self[mark]] divs = [self._refmap[b] for b in self._refmap if b.split('@', 1)[0] == mark.split('@', 1)[0]] @@ -412,11 +408,11 @@ def update(repo, parents, node): bmchanges = [] if marks[active] in parents: new = repo[node] - divs = [marks.changectx(b) for b in marks + divs = [repo[marks[b]] for b in marks if b.split('@', 1)[0] == active.split('@', 1)[0]] anc = repo.changelog.ancestors([new.rev()]) deletefrom = [b.node() for b in divs if b.rev() in anc or b == new] - if validdest(repo, marks.changectx(active), new): + if validdest(repo, repo[marks[active]], new): bmchanges.append((active, new.node())) for bm in divergent2delete(repo, deletefrom, active): diff --git a/mercurial/discovery.py b/mercurial/discovery.py --- a/mercurial/discovery.py +++ b/mercurial/discovery.py @@ -301,7 +301,7 @@ def _nowarnheads(pushop): for bm in localbookmarks: rnode = remotebookmarks.get(bm) if rnode and rnode in repo: - lctx, rctx = localbookmarks.changectx(bm), repo[rnode] + lctx, rctx = repo[localbookmarks[bm]], repo[rnode] if bookmarks.validdest(repo, rctx, lctx): bookmarkedheads.add(lctx.node()) else: