TortoiseSVN Alternative for Ubuntu

A few days ago I started using my Touchscreen Compaq 2710p which Microsoft bought for me, and which I immediately installed Ubuntu on. The laptop is the closest thing I have to a netbook, it might be a few years old, and the release model for the series, but I don't have any money for a HP mini.

Anyways, I've been trying to mimic my Windows setup from my old laptop. One of the first things I wanted to do was write a neat blog article about encrypting live disk operating systems. However, before I could log in to the blog I needed my password manager, and that's where 'it' began. Here is a small dependency list. Blog Login <- Password Manager <- Password File <- SVN Repository <- Private Keys. My private keys were stored as PuTTY keys on my Kingston ultra-durable USB stick. Did you know there is a version of PuTTY for Ubuntu? Not only is this cool, but the CLI tools it comes with allowed me to export my PuTTY private keys into OpenSSH private keys. I know this is a fairly simple procedure, but I thought it was neat. :)

Now for the hard part, and the reason why I writing a post about how I wanted to write a post. Finding an alternative to TortoiseSVN for Ubuntu. I can remember when I used the command line to update and commit my SVN repositories. That was back in the day when I was sharing code with fellow students (and using Gentoo on my desktop). But ever since I started using Windows and TortoiseSVN I've fallen in love. My primary use for subversion is to keep my documents synchronized and organized across my current machines (all of which, until now, ran Windows). I did a few quick Google searches and found there were a few programs which allowed for graphical management of SVN repositories. The problem was, I was addicted to the shell integration. Oh how I enjoy the back-click->update/commit procedure.

Most of the literature I found was a few years old, so I was hesitant to try their suggestions. I saw recommendations for KDESVN on a few blogs, combined with some python scripts for nautilus, it was said to be a great alternative to Tortoise. I never tried installing KDESVN as the sheer amount of packages to create a working KDE environment on my Gnome-based Ubuntu was terrifying. Instead, I found a project called SubdiverSVN, or formally known as ToytoiseSVN, aiming to provide a TortoiseSVN-like application for Linux (whether it be KDE, Gnome, or xfce). Unfortunately, the project hasn't been updated in a while, and subversion has, so expect to edit a Makefile or two, include some new svn header files, and do some massive debugging in main.c. I got to about my 10th error in main.c before I started looking for other options.

Thankfully I found a forum thread on Ubuntuforums.org where a very recent post recommends RabbitVCS, get it, Tortoise, Rabbit... haha. Anyways RabbitVCS installed fairly simple and is amazingly similar to Tortoise. For Ubuntu 9.10, download the Ubuntu package from their website and:

sudo apt-get install ipython python-svn python-nautilus python-configobj meld sudo dkpg -i rabbitvcs-_karmic_all.deb

And like all good TortoiseSVN users, I update over ssh using the svn+ssh protocol. For my setup, I had created a new user on my server to specifically use svn. I then installed an authorized_key public key which jail's the user into the directory where the repositories are held (which is also their home). There are many sites explaining how this is done but it's essentially a modification to the ~/.ssh/authorized_keys entry for the key you're using. Simple add this to the beginning of the line:

command="svnserve --root=&amp;lt;directory of repositories&amp;gt; --tunnel --tunnel-user=svn",no-port-forwarding,no-X11-forwarding

In Windows TortoiseSVN used my PuTTY profiles to allow me to use my private key and configure a username to avoid entering them every time I wanted to update or commit. I was initially afraid that I would lose this feature on Ubuntu. Turns out it works, on Ubuntu I accomplished the same effect by creating an entry in my local ~/.ssh/config file like such:

host svn-personal
User "ssh/svn username on server"
Hostname "ssh/svn server IP"
Port "ssh port"
ForwardAgent no
ForwardX11 no
Compression yes
IdentityFile "path to private key in OpenSSH format"

RabbitCVS Folder after CheckoutNext I created a folder, back-clicked then hit 'checkout', and used svn+ssh://svn-personal/files as the URL. Then, similar to Tortoise, a friendly green check-mark emblem showed up on the folder and I had access to all my personal synchronized files, including my password database. I would certainly recommend RabbitVCS as the perfect TortoiseSVN alternative and as a complete SVN shell integrator to nautilus. The context menu/shell integration is well organized and should be very inviting to any Tortoise user.