Index: src/info.c
==================================================================
--- src/info.c
+++ src/info.c
@@ -516,11 +516,17 @@
       }else{
         @ <a href="%s(g.zTop)/vinfo/%T(zName)">[show&nbsp;diffs]</a>
       }
     }
     @ &nbsp;&nbsp;
-    @ <a href="%s(g.zTop)/vpatch?from=%S(zParent)&to=%S(zUuid)">[patch]</a><br/>
+    @ <a href="%s(g.zTop)/vpatch?from=%S(zParent)&to=%S(zUuid)">[patch]</a>
+	@ <form method="get" action="%s(g.zTop)/vdiff">
+	@   See difference from another version: 
+	@   <input type="text" name="to"/>
+	@   <input type="hidden" name="from" value="%S(zParent)"/>
+	@   &nbsp; <input type="submit" />
+	@ </form><br/>
     db_prepare(&q,
        "SELECT name,"
        "       mperm,"
        "       (SELECT uuid FROM blob WHERE rid=mlink.pid),"
        "       (SELECT uuid FROM blob WHERE rid=mlink.fid),"
@@ -995,10 +1001,17 @@
     @ </p></blockquote>
     @ <h2>To Artifact <a href="%s(g.zTop)/artifact/%S(zV2)">[%S(zV2)]</a>:</h2>
     @ <blockquote><p>
     object_description(v2, 1, 0);
     @ </p></blockquote>
+    @ <hr />
+	@ <form method="get" action="%s(g.zTop)/fdiff">
+	@   See difference from another version: 
+	@   <input type="text" name="v2"/>
+	@   <input type="hidden" name="v1" value="%s(zV1)"/>
+	@   &nbsp; <input type="submit" />
+	@ </form>
     @ <hr />
     @ <blockquote><pre>
     @ %h(blob_str(&diff))
     @ </pre></blockquote>
     blob_reset(&diff);