Microsoft Announces Git Support For Visual Studio, Team Foundation Server And Service

Microsoft just made a major announcement that will likely take many developers by surprise. At the ALM Summit in Redmond, WA this morning, Microsoft Brian Harry just announced that its Team Foundation Server and hosted Team Foundation Service (TFS), as well as the complete Visual Studio 2012 suite (through a plugin the company is releasing today) will offer support for Git, the increasingly popular distributed revision control and source code management system invented by Linux founder Linus Torvalds.

This is obviously one of the rarer moments where Microsoft embraces an open source solution that already has a lot of momentum behind it.

As Harry told me in an interview last week, Microsoft started engaging with the Git community about six months ago. It’s especially putting its weight behind the libgit2 and is actively contributing to the project. Those contributions, of course, didn’t go unnoticed in the Git community and Harry also noted out that Microsoft is collaborating with GitHub as well.

He acknowledges that this move will come as a surprise to many developers, but he hopes that “people will see it as a genuine contribution to the OSS community.” Microsoft, of course, is often seen as a company that fights the OSS community, but he thinks this project can help Microsoft change people’s perception of how it engages with open source.

Create Team Projects in TFS with a Git Repository

The roll-out of Git support across Microsoft’s development platforms is a bit complicated: Team Foundation Service, Microsoft’s hosted version control system, will offer support for Git starting today and will allow developers to host their Git repos on the service. Team Foundation Server will offer support starting with its next major release, and starting today, Visual Studio 2012 users can use the “community technology preview” of the Git plugin on top of the preview version of Visual Studio 2012 Update 2. Microsoft isn’t planning to add Git integration to older versions of Visual Studio and TFS.

This means Visual Studio users, for example, can now use GitHub and other Git-compatible repositories to host and manage their projects. Microsoft won’t kill off its own proprietary centralized version control system in favor of Git, but the open source solution will become a native part of Visual Studio and TFS. As Harry notes in a blog post today, however, his team thinks Git fits “well with the trends we see in software development: loosely coupled systems, distributed teams, lots of component reuse, incorporation of OSS, etc.”

As Harry told me, the TFS team took a look at what developers were doing after the group finished Team Foundation Server 2012. What became increasingly clear to Microsoft at that point was that the way apps are getting built had changed and that the momentum was clearly behind Git and the concept of distributed version control. The old Microsoft would probably have decided to co-opt the concept and build its own solution, but according to Harry, it was “super-clear that Git was winning.” Git, in his view, is a good and widely supported solution, so there was “no point in fighting the Git momentum.” Because of this, Microsoft’s Git implementation will work with “pretty much any Git repository – local, enterprise, Codeplex, GitHub, BitBucket, …. And TFS will work with pretty much any Git client – existing Git command lines, XCode, Eclipse’s Git support.”

Microsoft, of course, is also interested in ensuring that its development tools stay relevant for a new generation of developers. While Team Foundation Server has many ardent fans in the enterprise world, it’s not something most startups even consider for their projects. Adding Git support, however, will make the Team Foundation suite an option for many developers and even if they are not interested in hosting their projects on Microsoft’s servers, built-in Git support in Visual Studio will likely make Microsoft’s development suite a more interesting option for many programmers.

Git in TFS