Click to find out more about our Work
April 28th, 2009

Which versioning tools to use for your project/application ? SVN or GIT

No Comments, Why not post one ?

Imagine…you are working on a software project, there are loads of files and you are constantly making changes to it. Suppose, because of some modifiction the program stops responding or not working the way it should and its almost impossible for you to find the “needle” (error) from the haystack, what would you do ?!

Well I had numerous experiences such as this. After a lot of research I found out about CVS and SVN, GIT. These are methods to keep a version of your software from the time it is concieved, monitering every small change and till the time is done. The best part, if anything goes wrong, you can always revert back to the previous version.

This post is a small compilation of different versioning systems. I won`t be talking about CVS since it is kinda outdated and in the open-source community GIT or SVN is preferred.

SVN – (Sub)Version Control

SVN was initiated by CollabNet in 2000. There is a lot of technical stuff to it. In lay man’s terms, Features of SVN are

    SVN Logo

  • Commits are atomic i.e For instance, you have modified a file. Now you want to commit it to your repository (Central Storage), if by chance you got disconnected during the commit process, there won`t be any data inconsistency, i.e either the repository will be updated or it won’t and in this scenario it won’t.
  • Repository is Centrally Located. If you are disconnected from the network, there is no way you can view the history of a particular file.
  • Renamed/copied/moved/removed files retain full revision history. i.e Every action on any file will be recorded. You can at any time go back to the previous revisions.
  • You can get/retrieve a file based on its revision number.
    You must have noticed a lot many times, huge sites use versioned style sheets. Example style.css?rev=11 or in javascript files xx.js?rev=5. This will retrieve the respective revsion of that particular file from the repository.
  • You can branch your files to a different directory to continue the work from there on.
    Suppose 2 people are working on a single project, and both of you are working on module A of that project. You can set up a branch for your individual development of that module instead of centrally both of you committing codes over one and other.
  • Parsable output, including XML log output. You can retrieve the output of any commit in XML format.

Enough with the mumbo jumbo. In short, SVN is a central Repository. It stores all information,versions of a file centrally. The users when they checkout or update via SVN, they only get the latest revision of the file and not the entire history

For Windows there is a really cool Interface to interact with SVN, i.e TortoiseSVN
It gets integrated into the Windows Shell. With a click of the right mouse button, you can access Tortoise SVN’s Features. Very simple to understand. To know more about TortoiseSVN, check http://tortoisesvn.net

Please note that you don`t need to install SVN server in your computer to access SVN repositories or update SVN repositories. TortoiseSVN takes care of all that.

I would suggest you guys to read a free ebook on SVN posted http://svnbook.red-bean.com/en/1.5/svn-book.pdf

Pages : 1 2

Leave a Reply

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code lang=""> <del datetime=""> <em> <i> <p> <q cite=""> <strike> <strong>