If you run a pyblosxom blog with auto-copied stories from SVN you are probably interested in getting stable story dates that don't change every time you update a story. The date of the initial SVN log entry of a story is something like the "day of birth" of a story, so it's a good value to use. Christopher Baus implemented a plugin for pyblosxom, which looks overly complicated to me: it depends on memcached and comes in two large python scripts.
To simplify things I wrote this minimal replacement:
import pysvn, os, sys, anydbm
from config import py
def get_mtime(fname):
cache_fname = os.path.join(py['datadir'], 'SVNDATES')
cache = anydbm.open(cache_fname, "c")
if cache.has_key(fname):
d = float(cache[fname])
else:
client = pysvn.Client(fname)
l = client.log(fname)
if len(l) > 0:
d = l[0]['date']
cache[fname] = str(d)
else:
d = -1
del client
del cache
return d
def cb_filestat(args):
args["mtime"] = list(args["mtime"])
d = get_mtime(args["filename"])
if d >= 0:
args["mtime"][8] = d
return args
Since accessing SVN logs is quite slow the script caches the "date of birth" in a dbm file. Make sure that your web server has enough priviliges to access that database file which is stored in $datadir/SVNDATES by default.