diff -ruN /opt/trac.bak/templates/anydiff.cs templates/anydiff.cs
--- /opt/trac.bak/templates/anydiff.cs	1970-01-01 01:00:00.000000000 +0100
+++ templates/anydiff.cs	2004-11-01 21:27:20.000000000 +0100
@@ -0,0 +1,142 @@
+<?cs set:html.stylesheet = 'css/changeset.css' ?>
+<?cs include "header.cs"?>
+<?cs include "macros.cs"?>
+
+<div id="ctxtnav" class="nav">
+ <ul>
+  <li class="last"><a href="?format=diff">Download Diff</a></li>
+ </ul>
+</div>
+
+<div id="content" class="changeset">
+<?cs each:file = changeset.diff.files ?>
+<h1>Diff between revision <?cs var:file.rev.old ?> and 
+		revision <?cs var:file.rev.new ?> 
+		of <?cs var:file.name.new ?></h1>
+<?cs /each ?>
+
+<form method="post" id="prefs" action="<?cs var:anydiff.href ?>">
+ <div>
+  <label for="style">View differences</label>
+  <select id="style" name="style">
+   <option value="inline"<?cs
+     if:diff.style == 'inline' ?> selected="selected"<?cs
+     /if ?>>inline</option>
+   <option value="sidebyside"<?cs
+     if:diff.style == 'sidebyside' ?> selected="selected"<?cs
+     /if ?>>side by side</option>
+  </select>
+  <div class="field">
+   Show <input type="text" name="contextlines" id="contextlines" size="2"
+     maxlength="2" value="<?cs var:diff.options.contextlines ?>" />
+   <label for="contextlines">lines around each change</label>
+  </div>
+  <fieldset id="ignore">
+   <legend>Ignore:</legend>
+   <div class="field">
+    <input type="checkbox" id="blanklines" name="ignoreblanklines" <?cs
+      if:diff.options.ignoreblanklines ?>checked="checked"<?cs /if ?>/>
+    <label for="blanklines">Blank lines</label>
+   </div>
+   <div class="field">
+    <input type="checkbox" id="case" name="ignorecase" <?cs
+      if:diff.options.ignorecase ?>checked="checked"<?cs /if ?>/>
+    <label for="case">Case changes</label>
+   </div>
+   <div class="field">
+    <input type="checkbox" id="whitespace" name="ignorewhitespace" <?cs
+      if:diff.options.ignorewhitespace ?>checked="checked"<?cs /if ?>/>
+    <label for="whitespace">White space changes</label>
+   </div>
+  </fieldset>
+  <div class="buttons">
+   <input type="submit" name="update" value="Update" />
+  </div>
+ </div>
+	<?cs each:file = changeset.diff.files ?>
+	 <input type="hidden" name="a" value="<?cs var:file.rev.old ?>" />
+	 <input type="hidden" name="b" value="<?cs var:file.rev.new ?>" />
+	<?cs /each ?>
+</form>
+
+
+<div class="diff">
+ <div id="legend">
+  <h3>Legend:</h3>
+  <dl>
+   <dt class="unmod"></dt><dd>Unmodified</dd>
+   <dt class="add"></dt><dd>Added</dd>
+   <dt class="rem"></dt><dd>Removed</dd>
+   <dt class="mod"></dt><dd>Modified</dd>
+  </dl>
+  <br />&nbsp;
+ </div>
+ <ul>
+  <?cs each:file = changeset.diff.files ?>
+   <?cs if:len(file.changes) ?>
+    <li id="file<?cs var:name(file) ?>">
+     <h2><a href="<?cs
+       var:file.browser_href.new ?>" title="Show version <?cs
+       var:file.rev.new ?> of this file in browser"><?cs
+       var:file.name.new ?></a></h2>
+     <?cs if:diff.style == 'sidebyside' ?>
+      <table class="sidebyside to_collapse" summary="Differences" cellspacing="0">
+       <colgroup class="base">
+        <col class="lineno" /><col class="content" />
+       <colgroup class="chg">
+        <col class="lineno" /><col class="content" />
+       </colgroup>
+       <thead><tr>
+        <th colspan="2"><a href="<?cs var:file.browser_href.old ?>">Revision <?cs
+          var:file.rev.old ?></a></th>
+        <th colspan="2"><a href="<?cs var:file.browser_href.new ?>">Revision <?cs
+          var:file.rev.new ?></a></th>
+       </tr></thead>
+       <?cs each:change = file.changes ?>
+        <tbody>
+         <?cs call:diff_display(change, diff.style) ?>
+        </tbody>
+        <?cs if:name(change) < len(file.changes) - 1 ?>
+         <tbody class="skippedlines">
+          <tr><th>&hellip;</th><td>&nbsp;</td>
+          <th>&hellip;</th><td>&nbsp;</td></tr>
+         </tbody>
+        <?cs /if ?>
+       <?cs /each ?>
+      </table>
+     <?cs else ?>
+      <table class="inline to_collapse" summary="Differences" cellspacing="0">
+       <colgroup>
+        <col class="lineno" />
+        <col class="lineno" />
+        <col class="content" />
+       </colgroup>
+       <thead><tr>
+        <th title="Revision <?cs var:file.rev.old ?>"><a href="<?cs
+          var:file.browser_href.old ?>" title="Show revision <?cs
+          var:file.rev.old ?> of this file in browser">r<?cs
+          var:file.rev.old ?></a></th>
+        <th title="Revision <?cs var:file.rev.new ?>"><a href="<?cs
+          var:file.browser_href.new ?>" title="Show revision <?cs
+          var:file.rev.new ?> of this file in browser">r<?cs
+          var:file.rev.new ?></a></th>
+        <th>&nbsp;</th>
+       </tr></thead>
+       <?cs each:change = file.changes ?>
+        <?cs call:diff_display(change, diff.style) ?>
+        <?cs if:name(change) < len(file.changes) - 1 ?>
+         <tbody class="skippedlines">
+          <tr><th>&hellip;</th><th>&hellip;</th><td>&nbsp;</td></tr>
+         </tbody>
+        <?cs /if ?>
+       <?cs /each ?>
+      </table>
+     <?cs /if ?>
+    </li>
+   <?cs /if ?>
+  <?cs /each ?>
+ </ul>
+</div>
+
+</div>
+<?cs include "footer.cs"?>
diff -ruN /opt/trac.bak/templates/log.cs templates/log.cs
--- /opt/trac.bak/templates/log.cs	2004-10-29 02:52:02.000000000 +0200
+++ templates/log.cs	2004-11-01 20:58:39.000000000 +0100
@@ -28,12 +28,15 @@
   </form>
  </div>
 
+<form method="get" action="<?cs var:log.href.anydiff ?>">
  <table id="chglist" class="listing">
   <thead>
    <tr>
     <th class="data">Date</th>
     <th class="rev">Rev</th>
     <th class="chgset">Chgset</th>
+    <th>A</th>
+    <th>B</th>
     <th class="author">Author</th>
     <th class="summary">Log Message</th>
    </tr>
@@ -48,12 +51,16 @@
      <td class="chgset">
       <a class="block-link" href="<?cs var:item.changeset_href ?>"><?cs var:item.rev ?></a>
      </td>
+     <td><input type="radio" name="a" value="<?cs var:item.rev ?>" /></td>
+     <td><input type="radio" name="b" value="<?cs var:item.rev ?>" /></td>     
      <td class="author"><?cs var:item.author ?></td>
      <td class="summary"><?cs var:item.log ?></td>
     </tr>
    <?cs /each ?>
   </tbody>
  </table>
+ <input type="submit" value="Create Diff between revision A and revision B" />
+</form>
 
 </div>
 <?cs include "footer.cs"?>

