{"id":2551,"date":"2013-01-30T09:15:00","date_gmt":"2013-01-30T09:15:00","guid":{"rendered":"https:\/\/blogs.msdn.microsoft.com\/bharry\/2013\/01\/30\/git-init-vs\/"},"modified":"2024-04-18T12:11:26","modified_gmt":"2024-04-18T19:11:26","slug":"git-init-vs","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/bharry\/git-init-vs\/","title":{"rendered":"Git init VS"},"content":{"rendered":"<p>Today at the ALM Summit I made a bunch of announcements.\u00a0 A couple of them warrant a bit of extra comment <a href=\"https:\/\/devblogs.microsoft.com\/bharry\/wp-content\/uploads\/sites\/8\/2014\/02\/8228.wlEmoticon-smile_58CD4724.png\"><img decoding=\"async\" class=\"alignnone size-full wp-image-15586\" src=\"https:\/\/devblogs.microsoft.com\/bharry\/wp-content\/uploads\/sites\/8\/2014\/02\/8228.wlEmoticon-smile_58CD4724.png\" alt=\"Image 8228 wlEmoticon smile 58CD4724\" width=\"19\" height=\"19\" \/><\/a><\/p>\n<p>Today, I made 2 announcements involving TFS, VS and Git.<\/p>\n<ol>\n<li>Team Foundation Server will host Git repositories \u2013 and more concretely, Team Foundation Service has support for hosting Git repositories starting today.<\/li>\n<li>Visual Studio will have Git support \u2013 and concretely, we released a CTP of a VSIX plugin for the Visual Studio 2012 Update 2 CTP today.<\/li>\n<\/ol>\n<h3>Resources<\/h3>\n<ul>\n<li>You can get a good overview of how to get started (including all the download links) by reading this <a href=\"https:\/\/aka.ms\/GitVS\">tutorial<\/a>.<\/li>\n<li>Watch this <a href=\"https:\/\/aka.ms\/GitVid\">video<\/a> for a 10 minute walk-through.<\/li>\n<li>Also you can read the <a href=\"http:\/\/tfs.visualstudio.com\/en-us\/home\/news\/2013\/jan-30\/\">news<\/a> and the <a href=\"http:\/\/tfs.visualstudio.com\/en-us\/learn\/code\/create-code-project-vs-git\/\">Learn content<\/a> on the Team Foundation Service welcome portal.<\/li>\n<\/ul>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/bharry\/wp-content\/uploads\/sites\/8\/2013\/01\/2352.vs_heart_git_thumb_66558A9C.png\"><img decoding=\"async\" class=\"alignnone size-full wp-image-15950\" src=\"https:\/\/devblogs.microsoft.com\/bharry\/wp-content\/uploads\/sites\/8\/2013\/01\/2352.vs_heart_git_thumb_66558A9C.png\" alt=\"Image 2352 vs heart git thumb 66558A9C\" width=\"404\" height=\"153\" srcset=\"https:\/\/devblogs.microsoft.com\/bharry\/wp-content\/uploads\/sites\/8\/2013\/01\/2352.vs_heart_git_thumb_66558A9C.png 404w, https:\/\/devblogs.microsoft.com\/bharry\/wp-content\/uploads\/sites\/8\/2013\/01\/2352.vs_heart_git_thumb_66558A9C-300x114.png 300w\" sizes=\"(max-width: 404px) 100vw, 404px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p>That\u2019s right, TFS &amp; VS support a full fidelity implementation of Git.\u00a0 Although this comes as kind of an abrupt announcement, it\u2019s been a long time in the making.\u00a0 We started talking about having DVCS support for TFS a year or more ago.\u00a0 I even mentioned at the end of this <a href=\"http:\/\/blogs.msdn.com\/b\/bharry\/archive\/2011\/08\/02\/version-control-model-enhancements-in-tfs-11.aspx\">post<\/a> over a year ago that DVCS was in our future.\u00a0 After a few months of investigation (in the middle of working on TFS 2012), we concluded that adding Git support was the right approach.\u00a0 As I write this, I\u2019m wondering what the reaction among our customers will be but I can say the reaction inside my own team when we first proposed this was quite mixed.\u00a0 There were certainly plenty of people who wanted to \u201cbuild a better DVCS system\u201d or integrate DVCS workflows into the existing implementation.\u00a0 There were others who were concerned about open source and lack of \u201ccontrol\u201d issues.\u00a0 But, the more we looked at it, the more it looked like the right thing to do.<\/p>\n<p>This post is going to be a bit of a weird post.\u00a0 I\u2019m going to structure it as a bit of a Q&amp;A to address many of the questions that came up for us and I\u2019m guess some that will come up for readers.\u00a0 I suspect this post is going to be the beginning of a conversation.\u00a0 I\u2019m going to be doing a <a href=\"https:\/\/aka.ms\/ama_bharry\">Reddit Ask Me Anything session<\/a> on Friday if you want to come along and chat about it.<\/p>\n<h3>Why are we adding DVCS to TFS?<\/h3>\n<p>Centralized version control is going to be around for a long time.\u00a0 It\u2019s a model that still works for a very large number of customers and we\u2019re very happy with the solution we have.\u00a0 However, DVCS, starting with roots in the OSS community, has grown steadily in popularity.\u00a0 Some of its benefits fit well with the trends we see in software development: loosely coupled systems, distributed teams, lots of component reuse, incorporation of OSS, etc.\u00a0 Our customers need DVCS workflows integrated with their full ALM process \u2013 in fact, it\u2019s one of our <a href=\"http:\/\/visualstudio.uservoice.com\/forums\/121579-visual-studio\/suggestions\/2312852-enable-distributed-source-control-dvcs-\">top UserVoice requests<\/a>.\u00a0 I like to say our goal is to have the best available centralized version control solution and the best available distributed version control solution.<\/p>\n<h3>Why are we incorporating Git?<\/h3>\n<p>When we made the decision that we were going to take the DVCS plunge, we looked at many options.\u00a0 Should we build something?\u00a0 Buy something?\u00a0 Adopt OSS?\u00a0 We looked at Git, Mercurial and others.\u00a0 It didn\u2019t take long to realize that Git was quickly taking over the DVCS space and, in fact, is virtually synonymous with DVCS.\u00a0 We thought hard about building something.\u00a0 Git hasn\u2019t been as friendly for Windows developers as on other platforms.\u00a0 By building on Git, we can take all the time we might spend just \u201ccatching up\u201d and spend that effort on something where we can add more distinctive value.\u00a0 Choosing Git just made sense.<\/p>\n<h3>Does this mean Team Foundation Version Control (TFVC) is dead?<\/h3>\n<p>Not for a second.\u00a0 We still believe that TFVC is the best centralized version control system available.\u00a0 If you haven\u2019t taken a look at version control in TFS 2012 yet you should. We improved it significantly with local workspaces for better offline and lower overhead, a better merging experience, and we\u2019ve been doing a lot of work in the web experiences for version control over the past few months (that affect both TFVC and Git projects). There is still a very important role for centralized version control to play and we plan to continue to carry it forward.\u00a0 Rather than dilute both into a single solution we\u2019re giving you the choice of which workflow is best for your circumstances.\u00a0 However, circumstances change and you are going to want to be able to move code from one workflow to the other and we\u2019re going to help there.\u00a0 Last summer we released a tool called <a href=\"http:\/\/gittf.codeplex.com\/\">Git-TF<\/a> which allows you to hook Git up to TFVC and exchange code and we\u2019ll be doing more to improve this area.<\/p>\n<h3>But isn\u2019t Microsoft against open source?<\/h3>\n<p>Absolutely not.\u00a0 Speaking for my little world, we\u2019ve been engaged with the OSS developer community for years.\u00a0 In my own area, we dabbled (and in some cases made missteps) as we\u2019ve learned our way.\u00a0 OSS became a major part of my world a few years ago when we acquired Teamprise (now known as <a href=\"http:\/\/www.microsoft.com\/en-us\/download\/details.aspx?id=30661\">Team Explorer Everywhere<\/a> or TEE).\u00a0 TEE is an Eclipse plug-in that gave us a lot more experience in the OSS world.\u00a0 Eclipse is, of course, OSS but so are large chunks of our plug-in implementation.\u00a0 Our engagement with OSS has gradually increased over the years both as we created our own OSS projects (like Git-TF) and engaged in existing ones with small contributions.<\/p>\n<p>All that said, this is a pretty big milestone for us.\u00a0 This is certainly the first time that my team has engaged so deeply in an existing OSS project.\u00a0 Our Git implementation is based on <a href=\"https:\/\/github.com\/libgit2\/libgit2\">LibGit2<\/a> and <a href=\"https:\/\/github.com\/libgit2\">related projects<\/a>.\u00a0 We started contributing to LibGit2 a few months ago and have been very active.\u00a0 If you are curious, checkout contributions by Ed Thomson (ethomso\nn), Philip Kelly (phkelley), Jameson Miller (jamill), Congyi Wu (congyiwu) and Martin Woodward (martinwoodward) on the LibGit2 GitHub project.\u00a0 The GitHub team also relies heavily on LibGIt2 and are major contributors.\u00a0 Before we even started coding we spoke with the folks there to make sure they were open to our participation.\u00a0 We have been open with them about our plans and agreed that it made sense for us to work together to bring Git forward \u2013 particularly with respect to making it great for Windows and VS. I have to say that the welcome by the entire LibGit2 community has been phenomenal.\u00a0 They have been incredibly helpful as we\u2019ve begun to contribute to LibGit2 and we wouldn\u2019t be in the position we are today without them.<\/p>\n<h3>Does VS\u2019s Git integration only work with our Git server?<\/h3>\n<p>Absolutely not!\u00a0 Both client and server are standard implementations of Git.\u00a0 Our client will work with pretty much any Git repository \u2013 local, enterprise, Codeplex, GitHub, BitBucket, \u2026.\u00a0 And TFS will work with pretty much any Git client \u2013 existing Git command lines, XCode, Eclipse\u2019s Git support, \u2026.\u00a0 This was a core principle from day 1.\u00a0 This is not about lock in \u2013 it\u2019s about providing a good and interoperable Git capability.<\/p>\n<h3>So is there anything special about our solution?<\/h3>\n<p>We like to think so.\u00a0 While both client and server are completely standard implementations, we are doing a lot of work to make our implementation as good as it can possibly be.\u00a0 First of all, we are doing deep integration with our ALM tools.\u00a0 Our intent is to provide the same level of integration as we have with TFVC \u2013 work item association, change tracking, build automation, My work, Code review, testing, \u2026\u00a0 TFS will give you the best all-up ALM solution with Git as the source control system.\u00a0 We are also working to make sure that our Git server is enterprise class \u2013 a common concern with Git historically.\u00a0 We are doing work on auditing, access control, high availability, online backup, etc.\u00a0 All the things that an enterprise is going to be particularly concerned about.\u00a0 And we are working hard to deliver an excellent Git experience in VS.\u00a0 Git can be, um, esoteric. We\u2019ve been working to codify the standard \u201cbest practices\u201d for Git in the community to make Git approachable and easy to use by everyone while not sacrificing the power.<\/p>\n<h3>When is this shipping?<\/h3>\n<p>\u201cThis\u201d has many piece so let\u2019s talk about each one in turn:<\/p>\n<ul>\n<li><strong>Team Foundation Service<\/strong> \u2013 As of today you can host Git repos in <a href=\"http:\/\/tfs.visualstudio.com\/\">TFService<\/a> projects.\u00a0 It is \u201cshipping\u201d now and ready for use.\u00a0 We still have lots more capabilities to add but it\u2019s ready to use for real.<\/li>\n<li><strong>Team Foundation Server<\/strong> \u2013 Our plan is to include Git support in the next major release of TFS.\u00a0 No date has yet been announced.<\/li>\n<li><strong>Visual Studio 2012 support<\/strong> \u2013 We provided a VSIX today.\u00a0 It is a <a href=\"http:\/\/go.microsoft.com\/fwlink\/?LinkID=275845\">\u201ccommunity technology preview\u201d of the Git VSIX<\/a> on top of a <a href=\"http:\/\/go.microsoft.com\/fwlink\/?LinkId=273878\">\u201ccommunity technology preview\u201d of VS 2012 Update 2 (VS2012.2).<\/a>\u00a0 We\u2019re very pleased with the performance\/stability of it but it is not yet officially \u201cgo-live\u201d.\u00a0 You are welcome to try it out but it is a preview release for evaluation, so be aware that there may be issues.\u00a0 We\u2019ll be releasing updates about every 3 weeks and you should expect it to converge fairly quickly.\u00a0 I don\u2019t know at this time when it will \u201cRTM\u201d but I expect it to have a \u201cgo-live\u201d designation before too long.<\/li>\n<li><strong>Visual Studio V.Next<\/strong> \u2013 Our Git plugin will be integrated into all editions of Visual Studio V.Next (including Express) and will appear in the various pre-releases and RTM.<\/li>\n<li><strong>Older versions of VS &amp; TFS<\/strong> \u2013 At this time, we are not planning to include Git integration in older versions of VS or TFS.<\/li>\n<\/ul>\n<p>It\u2019s been no small feat getting here \u2013 the team has put in a lot of long hours over the past few months.\u00a0 And this is just the beginning of the journey.\u00a0 We\u2019re nowhere near done with our Git solution.\u00a0 We are currently lacking major features \u2013 like pull requests \u2013 but they are coming.\u00a0 You should continue to see improvements on a regular basis for the foreseeable future.<\/p>\n<p>As always I\u2019m happy to answer questions and enjoy feedback.<\/p>\n<p>Brian<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Today at the ALM Summit I made a bunch of announcements.\u00a0 A couple of them warrant a bit of extra comment Today, I made 2 announcements involving TFS, VS and Git. Team Foundation Server will host Git repositories \u2013 and more concretely, Team Foundation Service has support for hosting Git repositories starting today. Visual Studio [&hellip;]<\/p>\n","protected":false},"author":244,"featured_media":14617,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[5,4],"class_list":["post-2551","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized","tag-tfs","tag-visual-studio"],"acf":[],"blog_post_summary":"<p>Today at the ALM Summit I made a bunch of announcements.\u00a0 A couple of them warrant a bit of extra comment Today, I made 2 announcements involving TFS, VS and Git. Team Foundation Server will host Git repositories \u2013 and more concretely, Team Foundation Service has support for hosting Git repositories starting today. Visual Studio [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/bharry\/wp-json\/wp\/v2\/posts\/2551","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/bharry\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/bharry\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/bharry\/wp-json\/wp\/v2\/users\/244"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/bharry\/wp-json\/wp\/v2\/comments?post=2551"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/bharry\/wp-json\/wp\/v2\/posts\/2551\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/bharry\/wp-json\/wp\/v2\/media\/14617"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/bharry\/wp-json\/wp\/v2\/media?parent=2551"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/bharry\/wp-json\/wp\/v2\/categories?post=2551"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/bharry\/wp-json\/wp\/v2\/tags?post=2551"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}