# # # patch "templates/revisiondiff.html" # from [0cfa3372c64f3e1dc8f6112afff98281feb88b07] # to [e20b8a8b50d5fea16bfc4ebe480d4044a82d3cb3] # # patch "viewmtn.py" # from [85859998bfe941079a0bd59978e3bf84a0b61f66] # to [e31a4d0ce63bf0a454bb5fe6dc9a531ef18760a7] # ============================================================ --- templates/revisiondiff.html 0cfa3372c64f3e1dc8f6112afff98281feb88b07 +++ templates/revisiondiff.html e20b8a8b50d5fea16bfc4ebe480d4044a82d3cb3 @@ -5,7 +5,8 @@ #filter Filter

-The unified diff between revisions $link($revision_from).html() and $link($revision_to).html() is displayed below. +The unified diff between revisions $link($revision_from).html() and $link($revision_to).html() is displayed below. It can +also be downloaded as a $link($diff_obj, "raw").html("raw diff").

#end filter ============================================================ --- viewmtn.py 85859998bfe941079a0bd59978e3bf84a0b61f66 +++ viewmtn.py e31a4d0ce63bf0a454bb5fe6dc9a531ef18760a7 @@ -168,7 +168,11 @@ class DiffLink(Link): class DiffLink(Link): def __init__(self, diff, **kwargs): Link.__init__(*(self, ), **kwargs) - self.relative_uri = 'revision/diff/' + diff.from_rev + '/with/' + diff.to_rev + if kwargs.get('link_type', None) == "raw": + mode = "rawdiff" + else: + mode = "diff" + self.relative_uri = 'revision/%s/' % (mode) + diff.from_rev + '/with/' + diff.to_rev if diff.fname: self.relative_uri += '/'+urllib.quote(diff.fname) self.description = "diff" @@ -718,12 +722,14 @@ class RevisionDiff(RevisionPage): else: files = [] diff = ops.diff(revision_from, revision_to, files) + diff_obj = Diff(revision_from, revision_to, files) renderer.render('revisiondiff.html', page_title="Diff from %s to %s" % (revision_from.abbrev(), revision_to.abbrev()), revision=revision_from, revision_from=revision_from, revision_to=revision_to, diff=syntax.highlight(diff, 'diff'), + diff_obj=diff_obj, files=files) class RevisionRawDiff(RevisionPage): @@ -740,7 +746,8 @@ class RevisionRawDiff(RevisionPage): files = [] diff = ops.diff(revision_from, revision_to, files) web.header('Content-Type', 'text/x-diff') - stdout.write(diff) + for line in diff: + sys.stdout.write (line) sys.stdout.flush() class RevisionFile(RevisionPage):