Home » Questions » Computers [ Ask a new question ]

What are the advantages of using SVN over CVS?

What are the advantages of using SVN over CVS?

"My company is using CVS as our de-facto standard for source control. However, I've heard a lot of people say that SVN is better.

I know SVN is newer, but other than that, I'm unfamiliar with its benefits.

What I'm looking for is a good, succinct comparison of the two systems, noting any advantages or disadvantages of each in a Java/Eclipse development environment."

Asked by: Guest | Views: 118
Total answers/comments: 4
Guest [Entry]

"CVS only tracks modification on a file-by-file basis, while SVN tracks a whole commit as a new revision, which means that it is easier to follow the history of your project. Add the fact that all modern source control software use the concept of revision so it is far easier to migrate from SVN than it is from CVS.
There is also the atomic commit problem. While I only encountered it once, it is possible that 2 people committing together in CVS can conflict each other, losing some data and putting your client in an inconsistent state. When detected early, these problems are not major because your data is still out there somewhere, but it can be a pain in a stressful environment.
And finally, not many tools are developed around CVS anymore. While the new and shiny-new tools like Git or Mercurial definitely lack tools yet, SVN has a pretty large application base on any system.
EDIT 2020: Seriously, this answer is 12 years old now. Forget SVN, go use Git like everyone else!"
Guest [Entry]

"One of the many comparisons:


Now this is very specific to that project, but a lot of stuff apllies in general.

Pro Subversion:

Support for versioned renames/moves (impossible with CVS): Fingolfin, Ender
Supports directories natively: It's possible to remove them, and they are versioned: Fingolfin, Ender
File properties are versioned; no more ""executable bit"" hell: Fingolfin
Overall revision number makes build versioning and regression testing much easier: Ender, Fingolfin
Atomic commits: Fingolfin
Intuitive (directory-based) branching and tagging: Fingolfin
Easier hook scripts (pre/post commit, etc): SumthinWicked (I use it for Doxygen after commits)
Prevents accidental committing of conflicted files: Salty-horse, Fingolfin
Support for custom 'diff' command: Fingolfin
Offline diffs, and they're instant: sev"
Guest [Entry]

"SVN has 3 main advantages over CVS

it's faster
supports versioning of binary files
and adds transactional commit (all or nothing)"
Guest [Entry]

The Subversion book has an appendix that details important differences from CVS, which may help you make your decision. The two approaches are more or less the same idea but SVN was specifically designed to fix long standing flaws in CVS so, in theory at least, SVN will always be the better choice.