context: add a changectx.diff() convenience function
With this function, extracting diffs becomes trivial:
repo = hg.repository(ui.ui(), path=root)
ctx = repo['tip']
for out in ctx.diff(): print out
--- a/mercurial/context.py Wed May 05 14:02:45 2010 +0200
+++ b/mercurial/context.py Tue May 04 20:12:58 2010 -0500
@@ -7,7 +7,7 @@
from node import nullid, nullrev, short, hex
from i18n import _
-import ancestor, bdiff, error, util, subrepo
+import ancestor, bdiff, error, util, subrepo, patch
import os, errno
propertycache = util.propertycache
@@ -204,6 +204,14 @@
def sub(self, path):
return subrepo.subrepo(self, path)
+ def diff(self, ctx2=None, match=None):
+ """Returns a diff generator for the given contexts and matcher"""
+ if ctx2 is None:
+ ctx2 = self.p1()
+ if ctx2 is not None and not isinstance(ctx2, changectx):
+ ctx2 = self._repo[ctx2]
+ return patch.diff(self._repo, ctx2.node(), self.node(), match=match)
+
class filectx(object):
"""A filecontext object makes access to data related to a particular
filerevision convenient."""