Patchwork D9779: changelog: move branchinfo to changelogrevision

login
register
mail settings
Submitter phabricator
Date Jan. 15, 2021, 1:19 a.m.
Message ID <differential-rev-PHID-DREV-jj6hp22pmczkn6t2l64f-req@mercurial-scm.org>
Download mbox | patch
Permalink /patch/48090/
State Superseded
Headers show

Comments

phabricator - Jan. 15, 2021, 1:19 a.m.
joerg.sonnenberger created this revision.
Herald added a reviewer: hg-reviewers.
Herald added a subscriber: mercurial-patches.

REVISION SUMMARY
  The function parses the extra dictionary after looking up the
  changelogrevision. To avoid duplicated look up, it is better to provide
  it as property of changelogrevision instead. Keep the function for a
  release cycle as at least the topic extension depends on it.

REPOSITORY
  rHG Mercurial

BRANCH
  default

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

AFFECTED FILES
  mercurial/changelog.py
  relnotes/next

CHANGE DETAILS




To: joerg.sonnenberger, #hg-reviewers
Cc: mercurial-patches, mercurial-devel

Patch

diff --git a/relnotes/next b/relnotes/next
--- a/relnotes/next
+++ b/relnotes/next
@@ -63,4 +63,5 @@ 
 
 == Internal API Changes ==
 
-
+ * `changelog.branchinfo` is deprecated and will be removed after 5.7.
+   It is superseded by `changelogrevision.branchinfo`.
diff --git a/mercurial/changelog.py b/mercurial/changelog.py
--- a/mercurial/changelog.py
+++ b/mercurial/changelog.py
@@ -200,6 +200,7 @@ 
     p1copies = attr.ib(default=None)
     p2copies = attr.ib(default=None)
     description = attr.ib(default=b'')
+    branchinfo = attr.ib(default=(_defaultextra[b'branch'], False))
 
 
 class changelogrevision(object):
@@ -372,6 +373,11 @@ 
     def description(self):
         return encoding.tolocal(self._text[self._offsets[3] + 2 :])
 
+    @property
+    def branchinfo(self):
+        extra = self.extra
+        return encoding.tolocal(extra.get(b"branch")), b'close' in extra
+
 
 class changelog(revlog.revlog):
     def __init__(self, opener, trypending=False):
@@ -601,8 +607,7 @@ 
 
         This function exists because creating a changectx object
         just to access this is costly."""
-        extra = self.changelogrevision(rev).extra
-        return encoding.tolocal(extra.get(b"branch")), b'close' in extra
+        return self.changelogrevision(rev).branchinfo
 
     def _nodeduplicatecallback(self, transaction, node):
         # keep track of revisions that got "re-added", eg: unbunde of know rev.