I have been using CVS to store my source code and documents for the past couple of years. CVS works quite well, because it makes synching data between various computers easier, doesn't require you to make a backup of your files every time they change and makes it easier to work on a project together with others.
However, CVS has its glitches. Renaming/moving files isn't really handled - there is no notion that a file once had a different name or that its reincarnation is a different file. Secure access to a repository is a pain, especially if you're using windows. Commits are per-file instead of per-changeset. It is a pretty poor tool for code management, but it's well known, and it works.
Now that Subversion and GNU arch are becoming more and more widely used, I've been checking out some of the newly available VCSes.
After reading a couple of webpages, I have decided to go with Subversion. The two important reasons for this are the fact that Subversion runs much better on Microsoft Windows (a couple of my projects are in MSVC), and that migration from CVS to Subversion is quite easy.
Other than that, arch is a nice project and I'd really like to switch to using arch once it is stabler and has improved win32 support (if it ever will..).
Reasons to use subversion instead of arch
- Quite similar to CVS
- Good Windows Support, even a GUI
- Easy migration
- Easier for outsiders to check-out (e.g. only a svn co http:// and you're done)
Reasons to use arch instead of subversion
- Flexible, neat design
- Easier to set-up repository
- No need for a central repository, easy for people outside of a project to make changes, fork, etc.
- Hard to learn
- Fewer dependencies. I know Subversion doesn't require apache2, but it certainly does require BDB and some XML libraries.