Right after I posted my previous post I noticed the Svn 1-Click Setup is running hopelessly behind in SVN versions.

Their default download link is still using SVN 1.3.2 and the latest link on the download page is only at 1.4.2, and both also have an old TortoiseSVN.

That'll teach me to try out an "all-in-one" package!

Let's just build everything with official binaries from now on, and get our source control upgraded to SVN 1.6.0, without losing any data. (Since I've already checked in quite a bit in my repository)

First of all, let's get rid of the old junk!

Take a copy of your repo folder as a backup, safety first.

  • Uninstall the 1-Click Setup through Add and Remove Programs
  • Go to Services and stop the service.
  • Open a command prompt and type sc delete SVNService
  • Throw away any files left in the directory.

Time to get the good stuff in, download the latest version from subversion.tigris.org, I grabbed svn-win32-1.6.0.zip

On my machine, I have my source control layout as follows:

  • C:\Servers
  • C:\Servers\Subversion
  • C:\Servers\Subversion\Server
  • C:\Servers\Subversion\Repositories
  • C:\Servers\Subversion\Repositories\Cumps

Unzip SVN 1.6.0 to the Server directory and add the bin directory to your PATH, to make future administration easier.

Copy the content of the repo you backed up to the new folder. You should end up with conf, dav, db, hooks, locks, format and README.txt in your new repository folder.

Open up a prompt and type svnadmin upgrade C:\Servers\Subversion\Repositories\Cumps, replace the last directory with your repository name. This will upgrade the repository layout to the latest. If you open up the format file in a text editor, it will say 5 as the version number.

Run the following command to create a new windows service for svn:

 
sc create SVN binpath= "C:\Servers\Subversion\Server\bin\svnserve.exe --service -r C:\Servers\Subversion\Repositories" displayname= "Subversion" depend= Tcpip start= auto

Pay attention to the single space after the equal signs!

At this point you can type NET START Svn and everything is working back as before, except you're on SVN 1.6.0 now, without any dependencies on installers and future upgrades will be a lot easier.

In the future we might upgrade this to work together with Apache too, when the need arises. Since I'm in my own private LAN, svnserve is perfectly fine, and I'm following the YAGNI (You Ain't Gonna Need It) Principle for this series.

 

After my previous series of post about Design Patterns, I'm planning to tackle a new subject over the course of the following articles.

We'll have a look at how to build a Continuous Integration Build Server from scratch.

I've recently dusted off an old desktop and decided to convert it to my personal build and backup server.

First things first, I won't cover the initial steps in much details as they are basic to building any server, I'll just list my starting point so you can compare.

  • Windows Server 2008 Standard.
  • IIS 7.
  • Sql Server 2008 (this is solely because I will be running integration tests against a database).

First of all, we need a place to store our source code. I'm going to use Subversion for this, since I don't have any MSDN subscriptions lying around to install Team Foundation Server at home. (Anyone with free MSDN vouchers lying around, hint :p)

Important Update: It has come to my attention that the 1-Click Setup is outdated, read my next article on how to install the latest Subversion. I also advice to install TortoiseSVN manually with the latest version. After installing SVN, continue reading after the next paragraph on how to configure your firewall and setup your first project.

Start by downloading Svn 1-Click Setup and running the installer, I skipped the TortoiseSVN step since I already had it installed. You can install it, or get it from tortoisesvn.tigris.org and install it manually afterwards.

After installing SVN, open up the Windows Firewall Configuration and add an inbound rule for TCP port 3690 to allow clients to connect using the svn:// protocol.

Find a file called passwd in the repo directory that you created during the installation and add yourself as a user, for example:

 
[users]
david=mysuperpassword

On another machine, or locally if you want, right click somewhere in Explorer and select TortoiseSVN - Repo-browser. Enter svn://servername as a Url and press OK.

This should show you your server with one project in it. I deleted this project to end up with an empty repository.

Decide which directory will be your main working directory on your machine, right click inside it and select SVN Checkout. The default options should be all right, press OK and it will fetch your empty repository.

At this point you can create new directories below this folder and simply right click and select SVN Commit to store them on your build server.

So far for the first step in our installation of a build server, you can now already start coding and safely store your code in a source control system, where you can easily go back to different versions and branch and merge code. Have a look at the SVN Book if you want to learn to unlock the full power of Subversion.

Even when you don't follow any other steps in this series, setting up a repository on another machine would be a best practice in my eyes, and will make you sleep in peace at night :)