Sunday, March 4, 2012

TortoiseSVN - The Starter Pack - Basic Concepts

I have delved into a lot of aspects of SVN but somehow missed on writing on the basics of usage. Though the TortoiseSVN help is quite self sufficient, I feel there still needs to be some basic start-up kit to give a walkthrough of the features and a step by step guide to start using TortoiseSVN from a purely non-technical perspective.

So here goes -> We will start with some basic concepts and then go on to the usage part.

TortoiseSVN acts as a client to access the repositories stored on the SVN server.

Working Copy
It is a local copy meant to sync with the server. It is a ordinary folder on your machine which contains SVN metadata to differentiate it from other folders. The metadata tells TortoiseSVN about the repository that it should connect to for updates

Checkout
It is the first step towards using SVN. Checkout allows you to create a working copy of a particular path in the repository. This is a one time activity.

Update
Get latest copy of data from SVN server. Once you have created a working copy, you will want to get the latest data from the server before you start making your changes

Commit
Once your changes are done and you want to save the changes to the server, you "commit" that data.

Delete
SVN gives default delete rights to all users as it is just a soft delete. You can still retrieve that data from earlier revisions [refer earlier posts "Retrieving Deleted Data"]

Cleanup
Cleans the corruption caused due to conflicts in working copy or file
corruption

When a friend recently suggested Bazaar as an alternative to Subversion, It got me to think that would be those parameters that would cause me to move to something other than SVN.

Subversion gives me a lot of convenience
Environment:
1. Can be hosted on a almost any environment - Linux, Unix, Windows etc...
2. Can be hosted over the internet and comes with the most updated security settings
3. Can be integrated with LDAP for enterprise use

Usage Features:
1. Server setup and configuration are very easy - less than 10minutes
2. Works with multitude of clients -Command line (SlikSVN), GUI Based (TortoiseSVN), Web based (WebSVN), Different OS (RapidSVN for Unix & Linux)
3. Integrates with Build tools - Ant, Maven, Jenkins, Hudson, Cruise Control
4. Integrates with Developer IDEs - VisualSVN (AnkhSVN) & Subclipse (Eclipse)
5. Multiple online forums and support available - SVNForum, Collabnet being most popular
6. Easy administration

Something to be desired from SVN would be:
1. Role base access levels
2. Project level administration roles
3. More out of the box reporting tools/ features
4. Better branching and branch histories for parallel development scenarios