DevOps Zone is brought to you in partnership with:

Jaroslaw Dobrzanski is a software developer living in Gdansk, Poland. He worked for both academia and industry. For last several years he's been realizing his potential with .NET, Java, SQL Server, C++. Open minded, ready for new opportunities, willing to share his knowledge.

He's running blog: http://dobrzanski.net

Jaroslaw has posted 2 posts at DZone. View Full User Profile

TFS vs. Subversion

10.13.2010
| 20045 views |
  • submit to reddit

I’ve been using both Subversion and Team Foundation Server (TFS). Because I first used Subversion and started using TFS afterwards, I had to get used to TFS flavors. I think TFS is great but to be honest there were a few things I missed from Subversion and a few things that really annoyed me when I started using TFS.

So, this is a list of strong and weak points of TFS from the perspective of a developer who switched to it after using Subversion.


Weak points

  • Subversion promotes a very clear view (similar to CVS) on the files tree on the server: trunk, branches, tags. In TFS everything is in one bag – branches are simple directories among the other content of ‘the trunk’. It still looks messy to me.
  • 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….)
  • It’s dedicated to Windows platforms only, but this is hardly a problem for a team who uses Visual Studio :)
  • It’s not a free tool
  • Complex installation
  • Update, 2010-08-22 Lack of switching feature. With Subversion I could easily switch between trunk and branches / tags, still using the same source directory. The action was straightforward and quick. On TFS you need to make a full check out of the other branch, which is longer and requires additional actions (e.g. IIS settings for new virtual directories)
  • Update, 2010-09-13 Poor support for revert (roll back). It’s not that easy to rever a check in (especially if it includes lots of files). Official roll back instruction sounds like a workaround… Another resource: read more


Strong points

  • Integration with Visual Studio
  • Integration with work items (bugs, tasks, scenarios, test cases, etc.) – in other words your team needs only one tool (Visual Studio Team System) for all project chores. This actually promotes TFS to be a more powerful tool that a source control only.
  • Shelving changes – ability to set aside pending changes temporarily in order to switch to another task – read more
  • SQL Server backend (e.g. backups)


To sum up, both Subversion and TFS are powerful. There’s not an easy answer which tool is better. Despite not giving a direct judgment, it really seems to me TFS is better for bigger projects – one tool needed for all kind of project tasks (work items, source control, bug tracking, planning). What are your thoughts?

P.S. Probably the list above would look differently if I first used TFS instead of Subversion
References
Published at DZone with permission of its author, Jaroslaw Dobrzanski. (source)

(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)

Comments

Martin Hinshelwood replied on Thu, 2010/10/14 - 10:32am

I spotted a good comparison of TFS vs. Subversion by Jarosław Dobrzański on DZone (you can also read the original post) but I feel that a couple of the points were either out of date, or bourn out of a lack of knowledge of the product, or even more likely I just missed the point. This article was taken from the perspective of an SVN user who has moved to TFS, and I am not in that category.

Read more on TFS vs. Subversion fact check

Jaroslaw Dobrzanski replied on Sat, 2010/10/23 - 6:10am

The link Martin Provided was invalid... Here's the link to his post where he gives more facts to this discussion: http://blog.hinshelwood.com/archive/2010/10/14/tfs-vs.-subversion-fact-check.aspx.

Personally, great post! He really pointed out several facts that I was not completely right about. For my defense, which my post lacked from, I was writing about VSTS 2008. It's true, with ver. 2010 Microsoft have provided a lot of improvements that made using TFS more user friendly.

Steve Hall replied on Thu, 2010/10/14 - 8:39pm

Notably, four points seemed off (incorrect) to me and you missed some key features.

First, rollbacks are built-into the TFS API. True, initially there's only "out-of-box" command-line support for it. But it's there. If you simply install the TFS Power Tools, you get the GUI to rollback a changeset.

All devs should be using the power tools, easily found witihin VS in the Visual Studio Gallery at

http://visualstudiogallery.msdn.microsoft.com/en-us/c255a1e4-04ba-4f68-8f4e-cd473d6b971f

Note that the power tools are intended to release "out-of-band" new features ahead of time. Some will likely be integrated into the next release, as were previous tools.

Note that there are other TFS commands that are command-line only, including lock, label, merge, destroy. Those are intended primarily for use in build scripts. GUIs for some of those (e.g., labelling) are also in the TFS Power Tools.

Second, TFS is supported with clients on other platforms. (I.e., it isn't "Windows-only" as you claim. Only the server-side must run on Windows.) E.g, there are several TFS plugins for Eclipse. There was forethought inside MS to allow for this, in order for provide for interop. Afterall, they themselves have to develop for multiple platforms (e.g., Office for Mac).

One of the plugins, previously named TeamPrise TFS for Eclipse, was bought by Microsoft and was rebranded Team Explorer Everywhere (as noted at http://www.teamprise.com/index.html). Note this plugin has been around for >4 years. (See http://www.theserverside.net/news/thread.tss?thread_id=41271) It was even free originally (see http://blog.coryfoy.com/2007/03/teamprise-makes-its-tfs-eclipse-plugin-available-for-free/).

Also, there are other client-side tools, like TortoiseSVN, that I use to access CodePlex (which are TFS servers). (See http://www.kudzuworld.com/Blogs/Tech/TFSClients.EN.aspx)

Third, the installation (setup) tool has been vastly improved with TFS2010. Notably, the "single server" install path is a LOT more turn-key.

I can attest to that. For TFS2008, I ended up writing a 33-page detailed doc (with dozens of screen-shots) on how to create a "single-server for-dev-use-only TFS2008" VM, due to it being a convulted nightmare...esp. with installing WSS 3.0 to provide a default SharePoint site for TFS. (It took 2-3 dozen WSS 3.0 and TFS2008 installs to find workarounds to all the gotchas, such as sequencing and pre-req issues.)

With TFS2010, my 33-page recipe was unneccesary. I relied solely on the MS install guide and didn't get burned. All the gotchas are GONE. The MS install guide, while not perfect, has also improved and shrunk, see:

http://www.microsoft.com/downloads/en/details.aspx?displaylang=en&FamilyID=2d531219-2c39-4c69-88ef-f5ae6ac18c9f)

Fourth, is the issue of cost. If you're already paying for "MSDN with VS 2010" then you've already got access to the "Dev. Edition" (5 or 10 seats) of TFS2010, which is sufficent for small teams. After many complaints (including mine) with TFS2005 and TSF2008, MS finally relented and started including it in the MSDN subscriptions. And you've also got "Team Explorer Everywhere" included to use in mixed *nix-Windows shops. Hence, I don't understand the concern about cost.

On the other hand, if a shop is too cheap to pay for any tools (like VS with an MSDN subscription), then I guess you're stuck using Mono tools or Eclipse and some free VCS. This comparison shouldn't be aimed at those users.

Other features you didn't mention:

Branch graphing, that's improved in VS2010, helps simplify branching/merging (esp. complex branch trees). I don't know of any Subversion client (or other free VCS client) that gives you the kind of ease-of-use these branch graphs provide. (Correct me if I'm wrong. I'm curious...) A good overview (with screen-shots of each type of branch diagram) is at

http://blogs.msdn.com/b/mitrik/archive/2009/06/11/branch-hierarchy-visualization.aspx

One of many demos on Channel 9 is at
http://channel9.msdn.com/blogs/visualstudio/branching-and-merging-visualization-with-team-foundation-server-2010

IntelliTrace, which provides end-to-end tracing while debugging. It's extremely useful in allowing Test Engineers to pass on testing results of a bug to the developer (attached to the work-item). This reduces the time for bug reporting and bug recreation ENORMOUSLY.

Gated checkins and custom checkin policies, which can be used to enforce development process policies, such as mandatory code reviews or completion of certain unit tests before checkin. Most free VCS's require some integration effort, if it's even possible.

Branch graphing and IntelliTrace alone should be enough to convince most developers to stop using free VCS tools (or any other tool that doesn't have the equivalent) if they have VS and TFS.

Since you note that branching is different, you should read the branching guidance for TFS2010 in the "Branching guide" at http://tfsbranchingguideiii.codeplex.com/

Also, for more source control FAQs, look at http://msdn.microsoft.com/en-us/library/bb668950.aspx

Finally, my chief issue with your comparison is this: comparing Subversion (or any free VCS) to TFS is like comparing a Chevy to a Cadillac. While both may get you to your destination, one will do it with a better ride. On second thought, it's more like comparing a scooter to a Cadillac, since Subversion is missing a few wheels like:

  • a build server (with build automation, parallel builds and support for multiple build servers in pools),
  • a test manager (supporting both automated and manual testing, as well as UI testing and load testing),
  • a requirements manager (with traceability of related reqs, tasks, and bugs)
  • a project status/report manager (including dashboards),

and other "minor" features, like:
  • formal agile project process support (a workflow process template),
  • gated checkins and checkin policies,
  • built-in changeset-issue integration (for project tracking, issue tracking and testing),
  • support for end-to-end tracing (Intellitrace) and tracking the testing results (attached to auto-created work-items),
  • support for Test Impact prediction (auto-determine which tests need to be run as result of a changeset).
  • built-in integration to a collaboration server,
  • built-in integration to a lab manager server (which is an addon), and
  • support for proxy servers (for remote distributed deployment).

A better comparison would be to compare a BMW (such as Perforce) to the Cadillac. But even that's an unequal and unfair comparison, since Perforce isn't a complete ALM solution and missing most of the same components as Subversion. A better comparison would be TFS against other ALM suites, like IBM Rational.

Overall, this comparison is lacking correctness and completeness. It's a 50,000 foot view and conflates fruits with nuts. (ALMs vs. VCS's.)

Don't get me wrong. Subversion is a good tool, for those who don't use Visual Studio or have a need for free tools. But, TFS is far better, esp. if you're using Visual Studio or need advanced features (like listed above).

Enrique Ortuño replied on Sat, 2010/10/16 - 11:20pm in response to: Steve Hall

Great response Steve, I couldn't have said it better, your answer should be another article. Jaroslaw, I think Steve is right, Subversion is an excellent tool, I have worked with it and although it has some interesting things, but together can not overcome TFS.

Hassan Turhal replied on Sun, 2012/09/16 - 2:54am

Hi,
Thanks for comprasion. But i want to correct something.
You wrote that,
“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?.)”. But if you will setup TFS Power Tools, you don’t need to use Visual Studio. At Window Explorer, you can see which files are binded to a source control or you can check-out or check-in. Just install Power Tools

Are you new to Java? 

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.