Today I updated my script to reflect the new SourceForge backup policies, including support for Subversion repositories. You can download it on my scripts page.

It used to be a bash script, but the second you're using commands like trap "error" ERR and set -e and cd "`dirname \"$0\"`", it's worth rewriting in Python. Interestingly, the Python came out surprisingly terse and clear, unlike past experiences writing shell scripts in Python. Also, it used to call into the adocman project (some Perl scripts provided by SourceForge to make backups easier), but it was such a pain to set up CPAN and install the required Perl packages that I decided I would reimplement their xml_export tool in Python and urllib2. I managed to replace xml_export with fewer than 20 lines of code. Python really does have "batteries included"!