Chris Baus

Subversion filestat plugin for Pyblosxom

Pyblosxom uses a file system approach for maintaining blog entries. While this is simple and flexible mechanism it isn't without drawbacks. One common problem is that blog creation dates are determined by the creation time of the file. The correct creation date for the entry is often lost when files are edited, backed up, or moved. Fortunately Pyblosxom's plugin architecture allows plugin developers to override this behavior.

Subversion's meta-data is used to determine an entry's creation date. Subversion is a Open Source replacement for CVS. This plugin is recommend for those who are already familiar with Subversion or other source control systems such as CVS.

This plugin deviates as little as possible from the Pyblosxom philosophy. Pyblosxom still retrieves its lists of known entries from the file system. The plugin assumes that those files are committed members of a Subversion working copy.

This plugin works particularly well with a staging server. Entries can be created, edited, and committed on the staging server. The live server is then updated with a simple svn up command.

External Requirements

This plugin requires external OpenSource software not provided with Pyblosxom or this plugin. The plugin requires that your entries reside in a Subversion working copy. More information is available here. This document assumes you are familiar with Subversion, and Subversion client and server installation is beyond its scope.

Unfortunately the performance of the Subversion creation date query prevents it from being used stand alone for dynamic page creations. Memcached is used to cache the creation date results returned by Subversion, which yields acceptable performance of dynamic page creation. Memcached is a general purpose, high performance memory cache originally developed for LiveJournal.com. More information on Memcached is available at their website.

Installation

Known Issues

If an entry exists in the blog path that isn't added to the working copy, an exception is thrown and Internal Server Error results. I think the best way to handle this would be to have the pyblosxom core catch the exception and ignore the entry. Unfortunately this can not be done via a plugin. This should be addressed in a future revision.

Acknowledgements

Thanks to Subversion developer C. Michael Pilato who wrote the svnbirthday module for a reasonable fee.

Questions or Comments

e-mail: christopher at baus dot net or give me a call at 702-505-4748.