Index: common.py
--- common.py.orig	2007-04-13 14:20:33 +0200
+++ common.py	2007-07-31 10:46:00 +0200
@@ -17,6 +17,13 @@
 import traceback
 
 def parse_timecert(value):
+    # The datetime may contain microseconds which time.strptime cannot
+    # parse. Drop them. This is easy because Monotone keeps timestamps
+    # in ISO 8601 format, so microseconds necessarily start with a
+    # period.
+    index_of_period = value.find ('.')
+    if index_of_period > -1:
+        value = value[0:index_of_period]
     return apply(datetime.datetime, time.strptime(value, "%Y-%m-%dT%H:%M:%S")[:6])
 
 def set_nonblocking(fd):
Index: templates/index.html
--- templates/index.html.orig	2007-04-13 14:20:34 +0200
+++ templates/index.html	2007-07-31 10:50:20 +0200
@@ -3,13 +3,12 @@
 #def body
 <p>
 Welcome to this <a href="http://grahame.angrygoats.net/viewmtn.shtml">ViewMTN</a> installation.
-The list below shows all branches served within this <a href="http://www.venge.net/monotone">Monotone</a>
-database.
+The list below shows all branches served within this <a href="http://www.monotone.ca/">Monotone</a> database.
 </p>
 
 <p>
 Select one of the branches and you will be shown a list of recent changes that have occurred within it.
-If you are looking for a particular revision (for example, a release) the <a href="/tags">list of tags</a>
+If you are looking for a particular revision (for example, a release) the <a href="$dynamic_join('tags')">list of tags</a>
 might be useful.
 </p>
 
Index: templates/revisionfile.html
--- templates/revisionfile.html.orig	2007-04-13 14:20:34 +0200
+++ templates/revisionfile.html	2007-07-31 10:53:12 +0200
@@ -7,5 +7,5 @@
 $link($filename).html(override_description="View") | 
 $link($filename, for_download=True).html(override_description="Download") | 
 $link($filename, for_changes_rss=True).html(override_description="RSS")
-#filter WebSafe
+#end filter
 #end def
Index: templates/revisioninfo.html
--- templates/revisioninfo.html.orig	2007-04-13 14:20:34 +0200
+++ templates/revisioninfo.html	2007-07-31 10:52:14 +0200
@@ -48,8 +48,8 @@
 $imagemap
 #end filter
 <div align="center" style="float: left; margin: 0; margin-bottom: 1em;">
-<img style=" border-width: 1px; border-color: black; border-style: solid;" usemap="#ancestry" src="$imageuri" alt="Ancestry of $revision" />
-<br /><small><a href="/help#readinggraph">reading this graph</a></small>
+<img style="border-width: 1px; border-color: black; border-style: solid;" usemap="#ancestry" src="$imageuri" alt="Ancestry of $revision" />
+<br /><small><a href="$dynamic_join('help#readinggraph')">reading this graph</a></small>
 </div>
 
 #end def
Index: viewmtn.py
--- viewmtn.py.orig	2007-04-13 14:20:35 +0200
+++ viewmtn.py	2007-07-31 10:47:44 +0200
@@ -421,7 +421,7 @@
             if last_result != None:
                 parents = filter(None, parent_func(last_result.revision))
                 for parent_rev in parents:
-                    if parent_rev == None or not selection_func(parent_rev):
+                    if parent_rev == None:
                         continue
                     heapq.heappush(revq, ComparisonRev(ops, parent_rev))
 
@@ -429,7 +429,7 @@
             last_result = None
             while revq:
                 candidate = heapq.heappop(revq)
-                if not (candidate.revision in in_result):
+                if not (candidate.revision in in_result) and selection_func(candidate.revision):
                     last_result = candidate
                     break
             if last_result == None:
