TFS 2012 offers some new features to make life easier for developers who prefer the SVN
/DVCSstyle of version control. It’s a better option than ever, especially for unifying teams with diverse OS/platform/language development needs.
A while back, my colleague Martin wrote a nice summary in response to some critiques of TFS 2010 when compared to Subversion (SVN). I happen to be working on some documentation for a customer on this topic, I thought I might share what’s new now that TFS 2012 RTM is right around the corner.
TFS objection #1: Branch confusion
Fixed in 2010 and still fixed in 2012. :)
TFS objection #2: Checking out
If you want to edit a file you need to check it out for edit so that it’s listed in Pending Changes window after it’s changed. If you edit a file directly in Visual Studio it checks it out for edit automatically; however, if you make the changes outside Visual Studio (you need to change Read-only property prior to that) and forget to check it out for edit in Visual Studio the file is not listed in Pending Changes window. Consequently, the risk of not including that item while making a check-in increases (I personally experienced that a couple of times….) – Jarosław Dobrzański, TFS vs. Subversion
I have heard this from many other SVN users and I completely agree and understand the perspective. Although I find it difficult to understand how you know which files you have checked out when you don’t have this, it looks like all the source control products are going in this distributed direction and I will just have to go with the flow. – Martin Hinshelwood, TFS vs. Subversion Fact Check
Martin was right! They are all going in this direction! TFS 2012 now supports Local Workspaces and in fact new workspaces are even Local by default. This means:
- Edit, add, or delete any file
- In any editor, not just Visual Studio
- Without an explicit check-out
- Pending Changes detects all the changes for check-in
But what if my team still wants server-side visibility when someone has checked out a file? Explicit check-outs are still available, and Server Workspaces still exist. Best of both worlds!
TFS objection #3: Windows only
Fixed in 2010, and still fixed in 2012! Team Explorer Everywhere is a full-fledged member of the TFS suite and offers command-line support for Mac OS and Linux, plus an Eclipse IDE plug-in. And one of the major pain-in-th… pain points for non-Windows users was having to interact with explicit check-outs through the command line, which is fixed in 2012 thanks to Local Workspaces!
TFS objection #4 and #8: Reverting changes
Fixed in 2012! Rollback is now supported in the UI.
TFS objection #5: Cost
New options in 2012! TFS Express is free for small teams. Team Foundation Service is now in open preview; at the moment it’s totally free, and they’re promising to always have a free version though we don’t know how full-featured the free one will be.
TFS objection #6: Difficult to install
Fixed in 2010! Here’s a video of my colleague Steven Borg installing TFS 11 Beta in four minutes, 58 seconds.
Not fast enough for you? OK, how long does it take to enter your Windows Live ID and password into Team Foundation Service…? :)
Now, if you’re upgrading something with more complex requirements (customizations, consolidations, compliance) or you need to migrate from other tool(s), of course that might take longer than five minutes. But it’s doable. Northwest Cadence has lots of experience with upgrades and migrations, including the new TFS 2012, and we’d be delighted to help.
TFS objection #7: Switching between branches
Same as before. There are some advantages to the way TFS does it, but basically it’s just a preference thing.
One great big change (Local Workspaces) and a few little ones (rollback in the UI, along with baseless merge in the UI and other improvements) make TFS a more comfortable option for developers who’ve previously used and liked SVN. Where I think this is the best news is for diverse cross-platform dev shops, which are proliferating especially as more organizations need to move into mobile. TFS with TEE is a really, really good option to bring all of your developers, regardless of language or OS or platform or geographic location, together around a common ALM solution, and with 2012 it’s a better choice for developers than ever.
Update 1, July:
DVCS <> SVN. My #fail, and I have done lots of reading and querying to properly learn the difference. Thanks to Kyle for pointing that out.
Update 2, August: Actually, DVCS…
TFS is getting on the DVCS bandwagon! There’s a new bridge that syncs between a Git repo and TFS (Git, not github). It’s a cross-platform implementation and open source on CodePlex.
This is a great option for organizations, especially cross-platform shops: take advantage of the things TFS does well (integration, traceability, metrics) while still giving dev teams the flexibility to work with their source the way they want to.
Update 3, January: MOAR DVCS!
Real, full-fidelity, Git as the SCM under TFS. Not a bridge or a sync, just Git for TFS. First-class integration and traceability between source and everything else ALM. Woo.
Not to be a Mr. smarty-pants here – but svn isn’t dvcs. And I’d say I wouldn’t argue with the premise that TFS is a reasonable alternative to SVN – if you don’t mind that Microsoft after-taste. :) The real war is between DVCS and SVN/CVS/TFS (and really the rest of the old guard). For some free entertainment – here’s a rant from Torvalds on why git is awesome. http://www.youtube.com/watch?v=4XpnKHJAok8 .. the arrogant jerk is right though. :)
FWIW, to add to point 3 we also added things like Transparent execute bit support handling into the TFS Server in TFS 2012 so that if you are checking in a shell script from Unix that has the execute bit set (i.e. chmod u+x) then the execute bit is stored in version control alongside the file. Next time you do a get on a different Unix machine the execute bit is set without any work. In addition, if you do a chmod u+x or chmod u-x on an existing file then do a “tf status” you will see that we’ve automagically picked up that change and will check in setting (or unsetting) of the execute bit as part of your next check-in, even if the contents of the file are not changing. i.e. “it just works” (TM). Just one example of how the server has been improved to support a feature that only non-Windows users need. There are loads of little things as well like the fact that the default ignore list when adding files to version control means that the “.DS_Store” file is excluded by default. This is a thing Finder creates on the Mac and you never want in version control. There are a load more of these types of things in TFS 2012 to make it a nice system to use cross-platform.
What Kyle said. Arguing about TFS vs SVN in 2012 is like discussing VHS vs BetaMax.
Pingback: Managing Schemas And Source Control For Databases | James Serra's Blog