As part of my master’s thesis, I’m developing an asynchronous event-driven database driver API that I call ADBCJ. I currently have three implementations of the API. One implementation uses JDBC and achieves asynchronism using a thread pool. The other two implementations are custom drivers that are built using Apache MINA. MINA is already an asynchronous event-driven framework which makes it a natural fit.

My intent all along as been to open-source ADBCJ but I wasn’t sure how BYU would react to that. I’ve been discussing my concerns with the Technology Transfer Office. Because I am not being paid by BYU, I retain the copyrights on all the code I write so there no impediments to releasing ADBCJ under the ASL 2.0; which is what I’ve done.

I was originally looking at hosting ADBCJ at safehaus.org. In fact, I have Confluence and Jira projects setup for ADBCJ at safehaus.org and they’ve been there for a while now. However, my requests concerning setting up a Subversion repository and getting the Jira project to actually accept new issues have gone unanswered for a while now. This is understandable. People get busy and no one is getting paid to admin safehaus.org. So, I decided to move ADBCJ to Google Code. I don’t know that Google Code will be the permanent home of ADBCJ. In fact, after I defend my thesis, I will likely look at moving ADBCJ to the Apache Software Foundation.

In the mean time, I’ve been hosting the ADBCJ code base in a subversion repository on my home server. This subversion repository also contains my thesis proposal and thesis. Obviously I don’t want my thesis hosted at Google Code. So I began looking around at how to move just the ADBCJ branch of my subversion repository to Google Code and still retain the history.

The Google Code FAQ suggests I use svnsync. The problem is that, I could not find any svnsync options that would let me sync only a branch of my subversion repository. So I started playing with svnadmin dump and svnadmin load and stumbled across svndumpfilter. svndumpfilter lets you filter a dump produced by svnadmin dump by either including or excluding specific file patterns. So I did a dump of my subversion repository, filtered it to only include ADBCJ, and then loaded the dump into a temporary subversion repository. I then synced the temporary repository with Google Code (which was miserably slow taking nearly an hour). And voila! The ADBCJ source code is now hosted at Google Code with all the history, sans my thesis.

I’m continuously pleased with subversion. However, one of my coworkers has been playing with GIT lately. GIT makes it real easy to branch and has a lot of really interesting features.   GIT is a distributed version control system but it can also sync with a subversion repository which gives you the best of both worlds and makes it that much more attractive. Definitely something worth looking at.