I use Subversion on Windows, it's not so difficult, though setting it up on Ubuntu is sure to be easier. I use Cygwin on the server side, and I use SSH passthough exclusively (so I don't need to have svnserve running on the server box). Setting up SSH with
Cygwin is fairly easy, just run ssh-host-config and it'll create a host key, and optionally create an NT service and a special user account to run the service. It might complain about permissions on some directories, but it's easy to fix that and run it again.
I use a simple trick to set the svn repository base directory. You can do this through the SSH configuration, but this effectively means you lose the ability to use SSH for anything else than svn with that user account. What I do instead is rename svnserve.exe
to something else, and create a svnserve shell script instead that passes the appropriate directory to the renamed exe file. Works a charm, just be mindful to rename svnserve.exe again if you should update Cygwin (if it had an update for svn).
On the client I use TortoiseSVN sporadically, but mainly AnkhSVN from Visual Studio. I use public key auth for SSH, and there's an unfortunately poorly documented trick to make this work with AnkhSVN. Actually, there's two ways: the first is to tell AnkhSVN
to not use its own SSH client, but Cygwin's ssh.exe, which will then use the key in your Cygwin home directory. This feels like a hack though, and results in a few dozen command prompt windows showing up briefly whenever you do an SVN update or commit from
The better, and less easy to find out about, way is to use PuTTY and create a saved profile with the same name as the hostname of the SSH server you're connecting to. Set up this profile with the appropriate auto-login name and SSH key, and AnkhSVN's internal
SSH client will automatically use this profile.
And I also use Linux to access this Windows-based svn repository, which works fine in the usual way.