You know how you know you need to do something... you want to do that thing... you NEED to do that thing eventually... but the law or inertia just works against you? I know you've been there. Well, our IT development shop has been there for years. We've been rocking CVS as our version control system (VCS) for years (on the same server), and it's actually been OK. But some of us have seen the day of change coming for a long time now... or at least I have. The CVS is now past its prime and with new hardware we are poised to replace software as well.
Our shop often works on small projects and our developers have to work with just about every development technology known to man -- often in the same day. We grew up doing Java/Oracle mostly, but find ourselves living in .Net world these days. So Visual Studio integration would be a nice change for folks. Our guys and gals just want to focus on programming and do not want to deal with learning something ELSE new so a lower learning curve will initially seem more beneficial. In this vane, we currently don't use a distributed VCS model nor we do likely need one (but, maybe there's some benefit here we're not thinking of).
Our projects range from small to medium-large in terms of code, though we often abuse CVS by sticking non-code in it. So, speed is not a HUGE issue, but I'm sure everyone would appreciate a speed up. Everyone knows we need to improve our tagging/branching/merging, so a VCS that helps us do this easily/safely and doesn't get in our way is desirable. Our company is pretty much Microsoft across the infrastructure board, but we rock the occasional Linux server. Our local backup is being augmented by the enterprise over-the-wire Microsoft solution that sends daily changes back to the HQ. So, we'll likely shift to a VCS that happily (natively?) runs on Windows.
So, tonight I've done more reading (been thinking about this for years) and determining the next CVS lilly pad is going to me more challenging than ever. It seems that all of the leading contenders have matured greatly.
Candidate 1 - SVN
Subversion seems to be adequate. We don't need distributed VCS and there are a lot of tools out there for it. Some of the disk and speed issues seem to have improved over the years, but likely are still issues. SVN likely offers the lowest learning curve for folks, but we also don't gain as much from it. Oh, and the migration from CVS seems to be mature. There do seem to be Windows native installations possible.
Candidate 2 - Hg
Distributed VCS, decent documentation and rich tool sets. Learning curve will be steeper than SVN. Performance should be better than SVN, but not as fast as Git. Its python based and seems to be Windows native. I need to read more about CVS migration and how simple you can make using it (can you do central version management if you want to?). A little more reading from somewhat older links indicates that we will have a hard time following a centralized model with mercurial (though that may be a good thing).
The Rest - Git and Bzr
Git and Bazaar are both annoyingly compelling and mature. I'm going to ignore them for now however as I can't see anything that they do differently than what Hg does -reletive to our need.
Bzr seems like it is very flexible, but the toolset seems a little behind Git and Hg. Plus, it still seems to support Linux better than Windows given the competition developers seem to focus more on Hg and oddly Git for tool/integration outside of Linux.
Git is powerful and has some huge momentum. But the learning curve sounds like it's steepest here. That said, the existing toolset and mindshare to support them, particularly on Windows, seems to be present and not losing steam.
So, we don't have a decision yet, but I've provided some links below for more information.
Bazaar (bzr)
Subversion (svn)
Mercurial (hg)
Comparisons
Instructions, Tutorials, Stories
Our shop often works on small projects and our developers have to work with just about every development technology known to man -- often in the same day. We grew up doing Java/Oracle mostly, but find ourselves living in .Net world these days. So Visual Studio integration would be a nice change for folks. Our guys and gals just want to focus on programming and do not want to deal with learning something ELSE new so a lower learning curve will initially seem more beneficial. In this vane, we currently don't use a distributed VCS model nor we do likely need one (but, maybe there's some benefit here we're not thinking of).
Our projects range from small to medium-large in terms of code, though we often abuse CVS by sticking non-code in it. So, speed is not a HUGE issue, but I'm sure everyone would appreciate a speed up. Everyone knows we need to improve our tagging/branching/merging, so a VCS that helps us do this easily/safely and doesn't get in our way is desirable. Our company is pretty much Microsoft across the infrastructure board, but we rock the occasional Linux server. Our local backup is being augmented by the enterprise over-the-wire Microsoft solution that sends daily changes back to the HQ. So, we'll likely shift to a VCS that happily (natively?) runs on Windows.
So, tonight I've done more reading (been thinking about this for years) and determining the next CVS lilly pad is going to me more challenging than ever. It seems that all of the leading contenders have matured greatly.
Candidate 1 - SVN
Subversion seems to be adequate. We don't need distributed VCS and there are a lot of tools out there for it. Some of the disk and speed issues seem to have improved over the years, but likely are still issues. SVN likely offers the lowest learning curve for folks, but we also don't gain as much from it. Oh, and the migration from CVS seems to be mature. There do seem to be Windows native installations possible.
Candidate 2 - Hg
Distributed VCS, decent documentation and rich tool sets. Learning curve will be steeper than SVN. Performance should be better than SVN, but not as fast as Git. Its python based and seems to be Windows native. I need to read more about CVS migration and how simple you can make using it (can you do central version management if you want to?). A little more reading from somewhat older links indicates that we will have a hard time following a centralized model with mercurial (though that may be a good thing).
The Rest - Git and Bzr
Git and Bazaar are both annoyingly compelling and mature. I'm going to ignore them for now however as I can't see anything that they do differently than what Hg does -reletive to our need.
Bzr seems like it is very flexible, but the toolset seems a little behind Git and Hg. Plus, it still seems to support Linux better than Windows given the competition developers seem to focus more on Hg and oddly Git for tool/integration outside of Linux.
Git is powerful and has some huge momentum. But the learning curve sounds like it's steepest here. That said, the existing toolset and mindshare to support them, particularly on Windows, seems to be present and not losing steam.
So, we don't have a decision yet, but I've provided some links below for more information.
Bazaar (bzr)
- http://bazaar.canonical.com/en/
- http://doc.bazaar.canonical.com/migration/en/why-switch-to-bazaar.html
- http://doc.bazaar.canonical.com/migration/en/index.html
- http://doc.bazaar.canonical.com/migration/en/survival/bzr-for-cvs-users.html
- http://wiki.bazaar.canonical.com/
- https://launchpad.net/tortoisebzr/
- http://aigenta.com/products/UnifiedScc.aspx
- http://omgili.com/mailinglist/bazaar/lists/canonical/com/1278084026273723camellauncelotrusselorguk.html
- http://fossplanet.com/f10/bazaar-visual-studio-51528/
Subversion (svn)
- http://ankhsvn.open.collab.net/
- http://www.visualsvn.com/server/
- http://www.visualsvn.com/visualsvn/
- http://stackoverflow.com/questions/372687/good-visual-studio-svn-tool
- http://bitnami.org/stack/subversion
- http://subversion.apache.org/docs/release-notes/1.6.html
- http://subversion.apache.org/packages.html#windows
Mercurial (hg)
- http://mercurial.selenic.com/downloads/
- http://mercurial.selenic.com/wiki/OtherTools
- http://mercurial.selenic.com/wiki/WorkingWithSubversion
- http://lucumr.pocoo.org/2008/1/28/mercurial-for-subversion-users/
- http://seeknuance.com/2008/07/06/mercurial-vs-subversion/
- http://panospace.wordpress.com/2010/05/19/svn2hg_part1/
- http://www.ademiller.com/blogs/tech/2010/01/using-mercurial-with-visual-studio/
- http://www.eworldui.net/blog/post/2010/03/15/VisualHG-A-Mercurial-Plugin-for-Visual-Studio.aspx
- http://visualhg.codeplex.com/
- http://mercurial.selenic.com/wiki/UnderstandingMercurial#What_Mercurial_can.27t_do
- http://mercurial.selenic.com/wiki/RepositoryConversion#CVS
- http://mercurial.selenic.com/wiki/ConvertExtension#Converting_from_CVS
- http://en.wikipedia.org/wiki/Git_%28software%29
- http://code.google.com/p/msysgit/
- http://stackoverflow.com/questions/623518/msysgit-on-windows-what-should-i-be-aware-of-if-any
- http://code.google.com/p/gitextensions/
- http://stackoverflow.com/questions/507343/using-git-with-visual-studio
- http://stackoverflow.com/questions/1426467/best-practices-using-git-with-visual-studio
- http://code.google.com/p/tortoisegit/
- http://visualstudiogallery.msdn.microsoft.com/63a7e40d-4d71-4fbb-a23b-d262124b8f4c/
- http://blog.dynamicprogrammer.com/2010/02/15/git-integration-with-visual-studio.html
- http://coolthingoftheday.blogspot.com/2010/05/getting-visual-studio-to-get-git.html
- http://www.tigraine.at/2010/05/30/git-source-control-provider-for-visual-studio-2010/
Comparisons
- http://stackoverflow.com/questions/871/why-is-git-better-than-subversion
- http://stackoverflow.com/questions/645008/what-are-the-basic-clearcase-concepts-every-developer-should-know/645771#645771
- http://www.ericsink.com/scm/source_control.html
- http://animeshdas.wordpress.com/2009/11/19/head-to-head-comparison-between-subversion-git-and-mercurial/
- http://www.nigelthorne.com/2010/10/why-svn-scared-me.html
- http://techblurt.com/2010/08/24/source-control-comparison-subversion-vs-tfs-vs-mercurial-vs-git/
- https://git.wiki.kernel.org/index.php/GitComparison
- http://sina.salek.ws/content/comparing-popular-version-control-systems
- http://better-scm.berlios.de/comparison/comparison.html
- http://swik.net/git+Comparison
- http://www.javaworld.com/javaworld/jw-09-2007/jw-09-versioncontrol.html?page=1
Instructions, Tutorials, Stories
- http://www.techrepublic.com/blog/programming-and-development/a-development-workflow-for-mercurial/3237
- http://stackoverflow.com/questions/2555076/is-this-a-good-centralized-dvcs-workflow
- http://robertmccarter.com/?p=140
- http://dev.eclipse.org/blogs/francis/2010/05/14/sadly-converting-from-subversion-to-mercurial-failed/
- http://www.west-wind.com/presentations/subversion/
- http://blog.mwolson.org/tech/why_i_dislike_subversion.html
- http://www.rockstarprogrammer.org/post/2007/may/14/using-mercurial-work-around-centralized-scm-limita/
- http://greenspringdesign.com/blog/?p=9
No comments:
Post a Comment