I did use CVS a bit in my hobby projects and as a sysadmin at work, but jumped ship to Subversion as soon as I heard about it. I remember CVS as something that constantly gave small paper cuts.
What I never was involved with was the merging of branches. I’ve understood merging a branch involved summoning the Lord of All Fevers and Plague, having time itself frozen outside the confines of the lead developer’s cubicle, and luck.
This I would have liked to read more about.
We used CSV for a project in university. A friend set up a server on his home computer and the three of us could easily collaborate. We were the only ones using any form of source code mgmt in our course, others where mailing each other zip files, I believe. It was pretty okay.
In my first job I had to work with MKS source integrity, a source code management system invented by aliens or something. Awful, awful, awful. We then switched to SVN, for which i had to write some wrapper scritps to make the import work.. I believe they are now using git everywhere, I surely am using i for all my private and professional projects.
We currently use CVS at $job for a large amount of our projects, mostly because that’s what had been in use here for some 30 years. It’s great for our use-case (one branch, many developers), but we’ve been migrating projects one-by-one to git very slowly.
Git feels much more powerful, but also more complex for basic operations like merging and rebasing. Our integration/workflow with Eclipse could be hindering some of this, but it’s almost second nature to use CVS in the IDE.
I do use git quite a bit for personal projects, but mostly just through the terminal and with minimal merging/branching.
magit under emacs is really, really good if you’re jonesing for proper editor integration with your revision control system.
I used CVS for a few things back in the day, and SVN more - but I can’t remember either well enough to know how you’d even handle things like rebasing - to me that’s a term that almost doesn’t make sense outside of modern VCS.
So when you said it’s more complex, I was surprised. I do ‘git merge’ and ‘git rebase’ regularly, it’s an everyday part of the workflow. Rebasing in particular makes keeping long-lived branches alive in a state where they can be cleanly merged, a much more sane proposition.
+1 for magit in emacs also, btw. It’s a power tool for git.
Cheap branching and local commits are the biggest selling point for git’s usability over CVS/SVN, because I can be so much more confident that I’m not going to lose work. I can save commits, use temporary local branches, and never worry about accidentally destroying my local changes while doing a merge.
OpenBSD is still using CVS and it works fine for them.