From patchwork Wed Sep 25 22:14:53 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: D6884: bookmarks: remove changectx() method from bmstore (API) From: phabricator X-Patchwork-Id: 41772 Message-Id: To: Phabricator Cc: mercurial-devel@mercurial-scm.org Date: Wed, 25 Sep 2019 22:14:53 +0000 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 To: durin42, #hg-reviewers Cc: mercurial-devel 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()`