CVS was pretty good for me. I was not too happy but didn’t have many options either. Then one day, my friend told me about Subversion, the new age version control system. I decided to give it a shot and today I proudly admit that was one of the best decisions I ever took.
Why you should avoid using CVS
Commits are not atomic: that means if your commits fail in between the commit process then you end up in an inconsistent state and after that CVS gives you a lot of pain if you try to commit something.
Un-versioned Directories: As CVS deals at file level there is no versioning at the directory level
Pretty slow branching and tagging
No History of copy, move and rename: No history is maintained while renaming files i.e. if you rename a file all history associated with it is lost and we say it’s a version control! Same is true with moving and copying.
There are a lot many things that I can write, but my aim is not to criticize CVS, but to tell you why you should use Subversion.
Atomic commits: Commits are truly atomic which means either your commits succeed completely or fail completely; you will never be in inconsistent state.
File and Directory rename without losing history: You can happily rename your files without losing history at all.
Copy and Move: Restructure your directory anytime you feel with losing your revision history.
Branching and tagging is cheap operation: Branch as you like and as much you like; it’s fast and simple.
Sends diffs both ways: No bandwidth issues at all, whether you use it through intranet or the internet; as it sends diffs both ways.
Secure network access through https using ssl: It’s pretty important for teams working at different geographical locations to have secure access.
Support for binary files: Subversion treats binary files same as text files. Whether a file is binary or not does not affect the amount of repository space used to store changes to that file, nor does it affect the amount of traffic between client and server. For storage and transmission purposes, Subversion uses a diffing method that works equally well on binary and text files.
Easy backups: You can take backups pretty easily using svnadmin ‘dump’ and ‘hotcopy’.
Migration support for CVS and VSS: Migration scripts are readily available for CVS as well as VSS but people using CVSNT might not have enough luck to migrate successfully using the cvs2svn script.
Folder level access controls: There’s better, more granular security as well; you can set folder level permissions.
There are a lot of points I have missed, as my article is drop in the ocean of the limitless possibilities with Subversion. I’d be happy to hear your feedback on such points and on the article in general.
Filed under: OpenSource