No SVN on BlueHost


SVN stopped working on BlueHost last week. After a bit of digging, I discovered that the configuration of OpenSSH had changed, limiting the $PATH for non-interactive shells to the default of /usr/bin:/bin. You can’t change it in ~/.bashrc; you can’t change it in ~/.ssh/rc.

So, I start talking to tech support. At first, they tried to be helpful, and apologized for the inconvenience. But today, I got this message:

“Openssh was upgraded for security reasons. Unfortunately the upgrade changed functionality and now some programs such as subversion and git no longer work the way they did previously.

“It appears that the old behavior may have been flawed in the first place and shouldn’t have worked. We are looking into how to restore previous functionality without any negative security impact, but we have a desire to keep our accounts and servers from being compromised and therefor any decisions on changing functionality will be made with that in mind, but for the time being we are not promising that the original functionality will be restored due to security reasons.”

Well, that’s that, then. Goodbye, BlueHost. You are no longer an adequate web host. I think I’ll give 1&1 another shot before I finally give in and go with Linode.

Update 2010-04-22: See Franklin Strube’s post below for a possible workaround. I haven’t tested his solution (I’ve already moved off of BlueHost), but it seems sound. Thank you, Mr. Strube.

SVN on BlueHost

UPDATE 2010-04-15: Due to recent changes at BlueHost, the instructions below will no longer work. You’ll get SVN installed, but you won’t be able to check out your repositories. See No SVN on BlueHost for the details.

I’m in the process of migrating most of my sites from DreamHost to BlueHost. Putting the reasons for the move aside (<cough>uptime</cough>), DreamHost has one major advantage over BlueHost: easy-to-setup SVN. On BlueHost, SVN isn’t installed, so it took a bit of research to figure out how to do it. I found installation instructions in a few places, but (1) they were all for version 1.4.6 (1.6.4 is the current version) and (2) they didn’t quite work for me. So, here’s how I went about it:

cd ~/src
tar xzf subversion-1.6.4.tar.gz
tar xzf subversion-deps-1.6.4.tar.gz
cd subversion-1.6.4
./configure --prefix=$HOME
make install
cd ~
mkdir svn
cd svn
svnadmin create MyRepository

Pretty simple, overall. Subversion handles all of the dependencies automagically. The only non-standard bit there is the --prefix=$HOME to install it in my home directory (where I have write permission).

Now I can check out my repository with:

svn co svn+ssh://[email protected]/home/myUserName/svn/MyRepository

Notice the use of the svn+ssh protocol. BlueHost doesn’t have mod_svn enabled for Apache, so you can’t connect using HTTP.

Thanks to the Subversion / TortoiseSVN SSH HowTo and these instructions for remembering SSH passwords, I was able to save a session in PuTTY and use those settings to connect using a public key, so I don’t have to enter a password 400 times to check out the repository.