I keep reading the phrase “Git isn’t better than Subversion, it’s just different”.
I’m sure a few years ago people said “SVN isn’t better than CVS, it’s just different”.
Anyway, here’s one key aspect that shows how primitive svn is:
Subversion doesn’t actually have tags or branches. It only has folders.
The usual branches
and tags
directories you see in most svn repositories are not special. They’re just a naming convention.
After you “tag” a release (basically copy the trunk
folder into a new folder in tags
), you can modify it at will and Subversion won’t complain.
Compare with Git or Mercurial, where a tag is a read-only pointer to a specific changeset.
The same with branches: in svn you create an entire copy of the trunk folder, while in git you just create a pointer which advances as you make revisions.
If you’re interested in learning more about git, I recommend reading the Pro Git book. Also, Hg Init is an awesome introduction to Mercurial and to distributed version control systems in general.