I'm late on this one, but just want to add some bullets to the list nightcoder started: These are ways that SVN has benefited me.
Nightcoder wrote:
1) ...backup storage.
2) ...return to the previous stable version.
3) ...see differences between your current source code and last committed source code....
Additionally:
4) From a single, short comment in the SVN log, you can see who committed the change, when, and why.
- No sifting through comments in the code (unless you want to).
- Why is that? Because each time you commit, you are asked to comment the change. That taciturn comment is logged.
5) The '$id$' added (at your option) into the file itself is a fantastic reference point.
- Does it match the id of the version you have on your desktop?
- No more having to run a difference check on two (or 3 or 4!) same-named files.
- Does it match the id of the same-named file you have running on a different server/different domain?
- No? Then one server/domain is not using the latest version-- fix that.
- $id$ makes a handy 'version' reference in an x/html document meta-tag.
6) No more sifting through date-stamped backups to find working copies (see also, 2).
7) Add your code easily to Google code to share with the world or get help from others.
- Google code currently uses SVN.
8) As others have said, organization, organization, organization.
- Before using SVN, I thought I was well organized. I was wrong.
9) In a multi-user environment, synchronization of current versions is a snap.
- This in-built synchronization system may be the primary reason organizations
swear by such a system, in a mult-developer environment.
Downside:
- Learning curve may be fairly steep unless you're terminal-language oriented. The lingo is not like Perl/Java/PHP/etc.
- Initial set up can be confusing. Reading and following directions is imperative.
Overall, well worth the week you will spend emersed in setting up and learning the system.