Hee. We still use subversion every day.
Version control systems nowadays suffer from the problem that all new version control systems are created by groups of hackers working on projects so big and complex that the existing systems aren't powerful enough for them. So you keep getting more and more powerful and complex systems. git is so complex that no one who isn't a software developer can use it correctly.
I was tasked with moving a complex natural-language processing program for the NIH from, I think, SVCS, to git. After three days studying git man pages and trying to explain them to a group of linguists, I gave up and put everything under QVCS, and it was smooth sailing after that.
git is so complex that no one who isn't a software developer can use it correctly.
Try mercurial. It's got basically the same features, but is more comprehensible to human beings. There's an excellent tutorial called hg init.
(And if you should happen to need to use other people's stuff that's in git, you can just use the git extension for mercurial.)
Follow-up to Journal article about politics and mindkilling. That post showed that people can be convinced that a view is correct by being told that their political party endorses it, even if their party actually opposes it. A similar, but stranger, effect, is that people can be convinced that a view is correct because their favorite software implements it - even if they have stated that the view is wrong just minutes ago.
Subversion is a popular version-control system used by software developers. The "repository" is where subversion stores the definitive copy of each file it is keeping track of. A "diff" is when you ask subversion to show you all differences between your new code, and the last version of that code that it knows was in the repository. A "tag" is when you associate a set of versions of different files together, in a way so that they can be easily compared against or reverted to, without creating something called a "branch".
I've had variants of this conversation about Subversion three times so far:
Me: [problem X] happened because Subversion doesn't let you diff against the repository.
Other: What?
Me: Subversion doesn't let you diff against the repository. It only diffs against its local copy of the repository, which it updates when you do a checkout, commit, or update. So it won't show you any changes that someone else has made to the code since then. You can never see what changes other people have made since your last commit, because to get the changes, you have to do an update; and the changes are added to your code without being shown to you, and a diff won't show them. So you just cross your fingers and hope their changes are compatible with yours.
Other: That's ridiculous! Subversion doesn't do that. That would defeat the whole purpose of version control. That would be idiotic.
Me: Really, it does that. I've tried it. Repeatedly. I've wasted days of work because of it.
Other: Nonsense. Of COURSE Subversion diffs against the repository.
Me: Try this: Create a new file foo in your checkout in directory X. Then svn add foo and svn commit foo. Check out the same repository in directory Y. Modify foo in directory X. svn commit foo. Then do an svn diff foo from directory Y.
[A few minutes later, after trying it:]
Other: Well, of COURSE Subversion doesn't diff against the repository. It's meant for large, distributed projects. You wouldn't want to have to do diffs over the web.
Me: Why?
Other: It would be too slow.
Me: You do checkouts and commits and updates over the web. Are they too slow?
Other: You want to diff against your previous version. It would be too confusing to see the changes other people have made, too.
Me: Three minutes ago you said it would be idiotic not to diff against the repository.
Other: Look, Subversion is an industry standard!
Me: Subversion doesn't even let you tag releases.
Other: Of COURSE Subversion lets you tag releases.
[Conversation eventually ends with Other explaining why you don't need to tag releases anyway.]
[P.S. - There is a very long syntax for svn diff that lets you specify full paths to the repository and your checkout directory. It can't mix paths and URLs, so you have to specify your checkout directory as a complete URL. No one that I know uses this syntax.]