# HG changeset patch # User Pierre-Yves David # Date 1357774900 -3600 # Node ID 06185554e7e39e711af09ad3715a7f2f7b7db9f6 # Parent 2502a15e033d693bbf0651173d1762a337f7b8cf 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. diff -r 2502a15e033d -r 06185554e7e3 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"))