Open Source Friday: subversion-clj and jgit-clj

Posted on July 2, 2012 by Dima Sabanin Dima Sabanin

Almost a month went by after we deployed the new Beanstalk caching daemon to production and so far it’s been working great. The commit caching speeds improved so much that in most cases you shouldn’t even notice that there’s any caching at all.

As part of the work on the new caching daemon we’ve had to create some of our own special code based around some of the Java APIs (that we’re accessing through Clojure) to connect to the repositories and fetch the needed information out of them.

Today, we’re officially releasing this Clojure code as a new open source project and a big contribution to an existing one.

Subversion bindings for Clojure — subversion-clj

This is a new open source project that we’ve started. It’s an extraction from our code that reads information from a Subversion repository either from disk or from a remote URL. The code is a wrapper around the great SVNKit library.

Since this is an extraction from the caching daemon it only features a read-only API to get commit information out of the repository, but we invite anyone to contribute/request features they’d like to see implemented. For one thing we’re certainly going to add more features ourselves as we expand our usage of Clojure here at Beanstalk.

JGit bindings for Clojure — clj-jgit

This is our contribution to an existing open source project by Daniel Gregoire. Currently it is the best Clojure library to access JGit (the library Eclipse uses to access Git repos).

Some of the advanced ways to query the repositories for information we needed were missing so we’ve worked on extending clj-jgit and now thanks to Daniel our changes are merged into the official project. We’re also joining the development team of clj-jgit and are going to help drive the development of the project forward.

If you have any ideas or comments, please let us know what you think. We hope to continue open sourcing the useful stuff that we work on.