D6884: bookmarks: remove changectx() method from bmstore (API)

durin42 (Augie Fackler) phabricator at mercurial-scm.org
Wed Sep 25 18:14:53 EDT 2019


durin42 created this revision.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.

REVISION SUMMARY
  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)`.

REPOSITORY
  rHG Mercurial

REVISION DETAIL
  https://phab.mercurial-scm.org/D6884

AFFECTED FILES
  hgext/infinitepush/bundleparts.py
  mercurial/bookmarks.py
  mercurial/discovery.py

CHANGE DETAILS

diff --git a/mercurial/discovery.py b/mercurial/discovery.py
--- a/mercurial/discovery.py
+++ b/mercurial/discovery.py
@@ -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:
diff --git a/mercurial/bookmarks.py b/mercurial/bookmarks.py
--- a/mercurial/bookmarks.py
+++ b/mercurial/bookmarks.py
@@ -271,7 +271,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 +412,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):
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 @@
     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()`



To: durin42, #hg-reviewers
Cc: mercurial-devel


More information about the Mercurial-devel mailing list