Sunday, February 03, 2013

Microsoft ups their Git efforts another notch

This week Microsoft announced first class Git support embedded in the coming version of Visual Studio.

Now, it's not completely shocking. We could have seen it coming since Microsoft started offering Git repos on CodePlex, and more recently offering a Git client for TFS. In any case, these are some big news. Scott Hanselman weighs on some features and some more background here.

For those who are a bit unaware of what the Git situation on Windows looks like these days, I've dotted down these notes:
Some explanation on these:

  • msysGit has long been The Way to use Git on Windows. It's basically a port of Git itself, so it's a command-line tool.
  • GitExtensions (includes Visual Studio integration), TortoiseGit, Git Shell, posh-git and most other tools are powered by msysGit.
  • libgit2 is a native library for doing Git stuff. It is developed completely separate from Git itself. The above tools could (and should) probably use libgit2 instead of hooking onto and around msysGit.
  • Github for Windows was the first major Git client on Windows to make use of libgit2
Today a lot of the developers are hurting due to the friction of running Git on Windows. I tried down this path before to teach Windows developers how to use Git last year. Even though msysGit and Git Extensions worked great, it was hard to teach. In other words: this is hard for the uninitiated.

The first to deal with these problems indirectly were Shawn Pearce, Google and Eclipse, creating JGit, basically a Git implementation written in Java. To this effect, Windows-based Java developers (but not many others) were able to enjoy Git collaboration through Eclipse without going through msysGit. Also Git servers like Gerrit and Gitblit were created to run directly off JGit.

Github had another approach tackle these problems with Github for Windows. I tried the early versions and I wasn't directly convinced, but later I used it to demo setting up Git for designers due to its ease of setup. Github for Windows bundles along msysGit for whenever you need to use the command-line, but for its internal operations it uses libgit2.

And now Microsoft are doing it: Bringing Git directly into Visual Studio allows a large number of developers  out there to just start using Git without having to install msysGit.

It's really fascinating to see that Github and Microsoft are cooperating on libgit2. One one side, these two companies will start competing more and more as Github moves into the enterprise market, and Microsoft is moving into being a Github-like service provider with its Team Foundation Service.

However, I'm sure that they will both win on this collaboration, and in the end the big winners are you and me: We get a smoother Git experience on Windows, which means larger adoption of Git in general, which means easier conversion for those of us still working with crappy version control systems.