Some facts I dug up while looking up differences between SVN and CVS:
- Subversion enforces atomic transactions while CVS doesn’t. For example, if you were checking in multiple files and one of them had conflicts, CVS would allow you to commit everything except for that one file. You would then need to resolve that file’s conflicts before it can be committed. In this way, a single, logical commit may be broken down into two.
- CVS was originally intended for versioning of text files and so versioning of other files types (Unicode, binary) is non-trivial.
- Subversion works faster than CVS overall (at the expense of a full backup).
- Subversion was architecturally designed with future growth and expandability in mind, whereas CVS grew in an experimental manner. Unsurprisingly, this makes CVS difficult to grow in terms of functionality.
The pros and cons of SVN and CVS can be argued all day, but for me, the last point tips the scale in favor of SVN.