Index | Archives | Atom Feed | RSS Feed

Linking pyblosxom to SVN

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.


Avahi 0.1 Looming

Avahi 0.1 is due in the next few days. The last missing piece is a simplifying C wrapper around the DBUS API. Though Avahi is currently pre-0.1 it is already quite complete and mature. To put it with Ross Burton: "... this doesnt count as 0.1 because it has docs, man pages *and* works"

Unfortunately python-dbus has quite a few bugs which make it very difficult to code with. e.g. it doesn't handle sending empty arrays, fails to send byte values and so on. It is difficult to work around all these issues, therefore the Avahi client tools will not work with an unpatched python-dbus. You need to apply this patch (applying to 0.35.2) to fix at least the byte value bug to get them working.


Tiger Lilies

In the garden:

Tiger Lillies

Wheat

The wheat field behind our house:

Wheat Field

St.-Pauli-Elbtunnel

I really like this photo I made in the St.-Pauli-Elbtunnel in Hamburg:

St.-Pauli-Elbtunnel

© Lennart Poettering. Built using Pelican. Theme by Giulio Fidente on github. .