Setting up Ubuntu SVN server and NetBeans client
The following recipe will show you how to setup an SVN repository on an Ubuntu Gutsy server and then connect from an external Windows NetBeans instance via svn+ssh protocol. The whole process is actually much simpler than I first imagined and should only take about 10 minutes.
Start off by logging into your Ubuntu server and opening a command prompt, then run the following two commands to install the SVN server packages:
Next, create a user that will own the SVN files and act as the SVN admin, let's say 'svn':
sudo apt-get update
sudo apt-get install subversion
Give the user a password and leave all the details blank (or make something up if you wish).
sudo adduser svn
Next create a directory where you want your SVN repositories to be located:
Now it's time to create the actual repository:
sudo mkdir /var/svn
And make the svn user the owner of the repository:
sudo svnadmin create /var/svn/repos
And that's about it from the server side of things. To connect to this repository via the svn+ssh protocol you'd run the command:
cd /var; sudo chown -R svn svn;
To connect from NetBeans you'd right-click on your project, click Versioning, click Import into Subversion repository, type svn+ssh://svn@hostname/var/svn/repos into the Repository URL, download putty.exe and plink.exe to a local directory anywhere on your system and add them to your system PATH, then type plink -l svn -pw password into the Tunnel Command text field and you're done!
UPDATE: After restarting my computer and trying to commit some changes from NetBeans, I was presented with the error "Can't create tunnel: The system cannot find the file specified." Turns out that this is a common problem. The solution is to manually edit the Subversion config file located at %APPDATA%/Subversion/auth/ with the location of plink.exe and the svn username & password as documented on the NetBeans wiki here. In my case, I just added the line ssh = $SVN_SSH plink.exe -l username -pw password to the config file, restarted NetBeans and I was able to successfully commit again.