bookmarks: remove changectx() method from bmstore (API)
authorAugie Fackler <augie@google.com>
Wed, 25 Sep 2019 17:57:16 -0400
changeset 42978 e3bb2a58af1e
parent 42977 699102b10530
child 42979 b4093d1d3b18
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
hgext/infinitepush/bundleparts.py
mercurial/bookmarks.py
mercurial/discovery.py
--- a/hgext/infinitepush/bundleparts.py	Wed Sep 25 13:50:48 2019 -0400
+++ b/hgext/infinitepush/bundleparts.py	Wed Sep 25 17:57:16 2019 -0400
@@ -12,6 +12,7 @@
     changegroup,
     error,
     extensions,
+    node as nodemod,
     revsetlang,
     util,
 )
@@ -48,7 +49,7 @@
         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()`
--- a/mercurial/bookmarks.py	Wed Sep 25 13:50:48 2019 -0400
+++ b/mercurial/bookmarks.py	Wed Sep 25 17:57:16 2019 -0400
@@ -177,10 +177,6 @@
         """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 @@
                     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 @@
     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):
--- a/mercurial/discovery.py	Wed Sep 25 13:50:48 2019 -0400
+++ b/mercurial/discovery.py	Wed Sep 25 17:57:16 2019 -0400
@@ -301,7 +301,7 @@
     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: