Comments
Patch
@@ -385,8 +385,24 @@ class changelog(revlog.revlog):
l = [hex(manifest), user, parseddate] + sorted(files) + ["", desc]
text = "\n".join(l)
return self.addrevision(text, transaction, len(self), p1, p2)
+ def _addrevision(self, *args, **kwargs):
+ # Wraps default implementation to pass full object to addrevisioncb.
+ #
+ # We have separate calls to _addrevision because we want to avoid
+ # calculating returntext unless it is requested, since calculating it
+ # isn't free.
+ addrevisioncb = kwargs.get('addrevisioncb')
+ if addrevisioncb:
+ del kwargs['addrevisioncb']
+ node, text = super(changelog, self)._addrevision(returntext=True,
+ *args, **kwargs)
+ addrevisioncb(self, self._newchangelog(text))
+ return node
+ else:
+ return super(changelog, self)._addrevision(*args, **kwargs)
+
def branchinfo(self, rev):
"""return the branch name and open/close state of a revision
This function exists because creating a changectx object