changelog: add a `branch` method, bypassing changectx
authorPierre-Yves David <pierre-yves.david@ens-lyon.org>
Thu, 10 Jan 2013 00:41:40 +0100
changeset 18306 06185554e7e3
parent 18305 2502a15e033d
child 18307 0eed2546118a
changelog: add a `branch` method, bypassing changectx The only way to access the branch of a changeset is currently to create a changectx object and access its `branch()` method. Creating a new Python object is costly and has a huge impact on code doing heavy access to `branch()` (like branchmap). This change introduces a new method on changelog that allows direct access to the branch of a revision. See the next changeset for impact.
mercurial/changelog.py
--- a/mercurial/changelog.py	Tue Jan 08 01:28:39 2013 +0100
+++ b/mercurial/changelog.py	Thu Jan 10 00:41:40 2013 +0100
@@ -337,3 +337,10 @@
         l = [hex(manifest), user, parseddate] + sorted(files) + ["", desc]
         text = "\n".join(l)
         return self.addrevision(text, transaction, len(self), p1, p2)
+
+    def branch(self, rev):
+        """return the branch of a revision
+
+	This function exists because creating a changectx object
+	just to access this is costly."""
+        return encoding.tolocal(self.read(rev)[5].get("branch"))