Tutorial :Getting started with subversion


Duplicate of..:

We are currently using SourceSafe integrated with Visual Studio and with the continuous comments about how bad SourceSafe apparently is, I've decided that we should try moving to Subversion.

The problem is, having not used anything but SourceSafe, I need to get started somewhere and need some direction.

What software do I need to download and install? Server? Client?

What do I need to install the software on? Windows 2003?

Should I have a dedicated server or is an existing file server adequate?

How quickly will developers get up to speed? Is the integration similar enough to just carry on as normal?


Get your developers to read the free online Red-Bean Book. It's excellent, and covers all aspects of the process, including probably the best description of branching you'll find anywhere.


I found the Pragmatic Programmer's Pragmatic Guide to Subversion extremely helpful with this exact scenario.


There are a number of integration tools - TortoiseSVN is a good one for file system level control. I didn't get too into Visual Studio integration, but I hear good things about AnkhSVN.

Using an existing server is probably fine for now. The SVN server can run on any Windows platform.

Highly worth the time to learn to get away from SourceSafe.

Good luck!


To answer your questions:

Q: What software do I need to download and install? Server? Client?
A: There are a number of Subversion clients for Windows, including AnkhSVN that integrates with VisualStudio and one that is very popular with our clients, TortoiseSVN, which integrates with Windows Explorer.
On the server side, I'd recommend going with a hosted solution if your corporate policies allow. Just put "subversion hosting" into Google and compare the available providers. If not, I recommend installing the Windows binaries from the Subversion site.

Q: What do I need to install the software on? Windows 2003?
A: Subversion is available for all major platforms from the above link, so if you're a Windows shop, sure, Windows 2003 is fine. If you are heterogeneous, you may have a bit of an easier time configuring it behind Apache on Linux. Subversion is well-documented and has instructions for configuration on all platforms though.

Q: Should I have a dedicated server or is an existing file server adequate?
A: Again, I recommend hosting externally over hosting it yourself. Any hosting provider worth using will provide the following advantages:
*Accessible securely from anywhere via HTTPS (no need to configure corporate firewalls to work from home or a client site)
*Offsite backups (no need to set up new backup procedures for that dedicated server or file server in your office)
*Uptime (no need to worry about the box melting down or having some other issue that your team will have to deal with directly)
*Configuration (UI-based setup rather than having to learn server side configuration procedures)
If your company requires hosting it yourself, and there is sufficient space carved out on the file server, I would say it's not a problem to use an existing server. If you have a dedicated server handy, that will be better just from the perspective of not having to "bump heads" with other parts of the organization assuming it's a shared resource.

Q: How quickly will developers get up to speed? Is the integration similar enough to just carry on as normal?
A: There is a slight learning curve for Subversion, but Chapter 2 of the Red Bean book as well as the documentation for the clients explains how a regular work cycle goes. If your developers are familiar with CVS they'll be up to speed in no time. If they aren't, it may take a little while to get used to the notion that you don't have to lock files to work on them (Subversion has a locking mechanism but it's not designed to be part of the standard work cycle).

Definitely feel free to contact me directly if you have any other questions.


To get up and running quickly, consider VisualSVN Server. They also produce a nice plugin for Visual Studio integration, which sits top of a Windows Explorer integration utility called TortoiseSVN. It's not free sadly (the server is though I seem to remember).


As far as tooling goes:

I started using Svn after some minor work in Microsoft Team and picked up on it pretty quickly. Learning how to use branches and merging was the hardest part so far.


To answer your questions above:

  1. server, plus client software for each developer
  2. should be available for most OSes
  3. depending on the activity/number of developers etc. But start off with an existing server
  4. Ah! That depends on your developers :-) But it's pretty easy to create/check in/check out etc. But I'd read up on setting up a repository prior to letting everyone else loose on it!

The suggestion to read the Red-Bean book is invaluable.


First download the subversion. You might as well download the client/server install in order to get everything you need.

Next install the server side componet on a seperate machine. Jeffs Setting Up Subversion On Windows article is a good read.

On your client machines install TortoiseSVN. This will give you Explorer integration into SVN repositories, which is really useful VisualSVN provides integration into Visual Studio and can be useful, although I've always found TortoiseSVN enough for myself.


Being unfamiliar with anything except SourceSafe, you have already decided on Subversion? Is that wise? Perhaps you should try several different systems and see which one fits you best. I heartily recommend you try svn and also one or more distributed systems such as git, mercurial, et al. If you're making a break with the old way, you owe it to yourself to examine your options.


I suggest you rely on the command line, svn is pretty simpe.

>svn update  

updates your local copy from the repository

>svn commit -m"commit message"  

commit your local changes to the respository

If you create new files, you have to add them (or they won't be committed):

svn add file1 file2 ..

In my personal experience, this is much much simper than relying on some GUI. Any GUI out there will just add noise and overhead to something that's rather simple.

Some of my team members tried to rely on an eclipse plugin, but it would go nuts sometimes.


Why did you choose subversion? Why not try a distributed VC, which has decent support for branching and merging? I suggest that you look into mercurial or git.

Note:If u also have question or solution just comment us below or mail us on toontricks1994@gmail.com
Next Post »