Fri 17 Aug 2012
Thoughts on Version Control in General, Mercurial, and a Couple of Closing Words From Bob Newhart
Posted by Dan H under Dev Management, Productivity, Programming, SlickEdit Products, Technology, Uncategorized
[3] Comments
I like to open with a joke. I won’t this time, I’ll close with one. And then I will let Bob Newhart make it funny.
I have spent my entire professional career at here at SlickEdit, and almost from the start, I have handled our version control support. This means a couple of things:
- I have only used (on a day-to-day basis) the version control systems that we have used here at SlickEdit. In the early days we used our mutli-file diff feature. I prefer to think of this as a testament to how good our diff feature is rather than what you are thinking – which is probably “that is pure insanity”. In later years we used CVS. Eventually we moved to Subversion. A little sooner than we wanted because of how it handles branches – this is another story.
- Because I have to handle supporting them in SlickEdit, I have tested most of the free and commercially available version control systems (and a few that are no longer commercially available) on small source bases. I have not actually used all of them, I have some experience with them. The technical term for this in our industry is, “I know enough to be dangerous”.
We have 3 kinds of version control support in SlickEdit:
- Basic “command line” support, where we will run your checkin command according to a specified command line where the file name is filled in.
- SCC support – For version control systems that have an SCC provider, we will communicate with it and provide the level of support that SCC allows for. This can be frustrating because if an SCC system crashes, it will cause SlickEdit to crash. This happens occasionally because SCC providers tend to do their testing with Visual Studio, and not other systems.
- “Specialized Support” – This is what we provide for CVS, Subversion, git, and now Mercurial. We provide a GUI for viewing what files you have modified, what files are out-of-date (where possible), and a nice history dialog, among other things. Initially we did this sort of support for CVS because it was a different animal than the systems supported by 1 and 2. CVS is more directory oriented, rather than file oriented. This is true of all of the systems that have this kind of support.
So, now SlickEdit supports Mercurial, which a little different from git, which is a little different from Subversion, which was a little different from CVS. So, if you’re sitting at home in your basement (excuse me, “office”) writing a version control system that is going to solve the issues with Mercurial that weren’t solved in git, that weren’t solved in Subversion, that weren’t solved in CVS, I would like to say (politely):
STOP IT!
Enough already. The next version control system released needs to offer some real improvements over what is currently available. Since I have to support it, I’ll be the judge of what is a real improvement. Just contact me here… I’m easy to find. I’ve been here my entire adult life, integrating version control systems, comparing files, and working on my manifesto (no, this isn’t it. This doesn’t even scratch the surface).
P.S. The last couple of paragraphs are supposed to be funny. I understand the differences/advantages of these different systems, you don’t need to leave me nasty comments.
P.P.S. If you didn’t find any of what I wrote funny, take a few minutes and allow Bob Newhart to make you laugh.
If you don’t find this funny, I can’t help you.
August 17th, 2012 at 12:25 pm
No matter now politely you ask, there will certainly be Just Another Version Control System that comes along with just as many unsolved problems that you will inevitably have to support.
Sorry Dan.
August 17th, 2012 at 1:28 pm
You may have said it jokingly, but I for one would like to see your version control manifesto. I’ve used VSS, Subversion and now Git, and as far as I’m concerned this is still an unsolved problem.
August 31st, 2012 at 9:38 am
The manifesto line was tongue-in-cheek, but I will try to write about version control a little more often. Then I’ll append all those articles together into a manifesto