题记:呵呵,首先声明,题目起的有点大,其实我只想介绍下VS2013和TFS2013新加入的Git功能,也不是在VS中使用Git的详细向导(以后有空再详细分享给大家)。这篇文章虽然在写这篇文章《Visual Studio 2013 发布正式版及使用感受》的时候,心中就有此打算,后来有朋友回复说让我介绍一下Git的使用,更是让我觉得很有必要介绍一下这方面的内容。可惜拖了这么久才开动。
Git是一种近来很流行的版本控制系统(或称源代码管理系统),和传统的SVN、TFVC(TFS Version Control)这样的系统而言,最大的特点就是分布式。所谓分布式是相对于SVN这种集中式而言的,SVN或者TFVC都需要有一个中心服务器保存着源代码,所有开发者都使用客户端和这个服务器交互。
Git是Linux内核之父为了管理繁杂的Linux内核而开发的开源系统,随着GitHub这样的开源代码托管系统大热,而为很多人知晓使用。
Git的强大潜力并非真正在于分布式,而是在于其对源代码存储的机制(使用快照),由于这样的机制存在,你可以大量频繁的使用分支来工作,通过分支来隔离功能开发的过程。如果要在TFVC中频繁建立分支是不可想象的。比如我的一个以前的解决方案文件夹大约600M,如果频繁使用分支,那么一方面我的磁盘会出现大量重复的文件占用大量的磁盘空间,另外一方面在VS的历史打开记录中会有很多名称一样的解决方案,你还需要去辨别其所在路径从而确定是否打开了正确的分支代码。
由于本篇文章不是专门介绍Git的,所以我不会进一步对Git进行过多介绍。要入门Git,可以查看《git - 简易指南》这样的手册,如果需要深入了解Git,建议精读《Git - Book》这本书。尤其对于打算把Git引入到团队的技术负责人更是要深入了解Git,以便做出正确的技术选择。另外,在开发过程中应用GitFlow也是一种很好的实践。
而我为什么使用Git,可以在《Visual Studio 2013 发布正式版及使用感受》中找到答案。
由于VS针对源代码控制本身就提供了扩展接口,所以很早的时候,就有VS中使用Git的集成插件,比如:Git Source Control Provider。
后来微软提供了官方的Git集成插件:Visual Studio Tools for Git。提供这个插件最初的原因(我猜想)是,由于Git大行其道,导致CodePlex等也不得不支持Git,从而为了更好的支持Git在VS中的使用,微软就着手开发了这个插件。
这个微软官方的插件仅支持VS2012 Update 3的安装,其已经内置于VS2013的所有版本中(包括免费版)。这个工具内置了对于Git基础命令的操作功能,如果需要更高级的功能,可以安装第三方Git命令行工具(Git Bash)。同时,我也建议大家一并安装TortoiseGit这个工具,很多时候使用这个工具更顺手。
关于在VS2013中使用Git的详细文档,可见:http://msdn.microsoft.com/library/vstudio/hh850437。
VS2013中的Git功能可以连接任意Git服务器实现的。
在解决了Git客户端和开发工具集成的问题后,就需要解决服务器的问题。既然微软在CodePlex中都提供了Git支持,那么为何不在TFS中也提供呢,于是就有TFS2013对于Git的支持。Git理论上可以不需要一个服务器的,不过为了团队更好的协同,还是有必要假设一个中心Git仓库服务器,供大家pull和push用。而Git服务器有如下几种选择:
在TFS2013针对分布式团队的特点新增或加强了很多功能,最为显著的两个功能就是Git和Team Room。
Git由于具备分布式的特点,可以让地域不在一起的团队,更快的提交代码;每个地域的办公室也可以维护一个自己的共享库,让本地办公室的同事不同代码;各个办公室的代码也可以通过公司统一的Git服务器来同步。
当然这种分布式的源代码协作方式由于会在每个开发人员的机器上保存几乎完整的源代码库,虽然可以通过TFS等进行权限控制,但有些企业还是跟倾向于中心式的源代码管理系统如TFVC,这样对于代码可以更好的进行控制。
如果对于一个小型创业团队。通过使用Git+TFService的话,那么就可以在很自由和免费的环境下工作。比如,小型的创业团队可能都没有办公室,那么只需要去免费申请一个TFService(5个内免费使用),用Git创建工程,用VS2013 Express开发项目,那么大家的代码、工作进度都可以很好的管理起来。
最后源代码可以Git分布式了,开发进度也可以用TFS的WorkItem来分布式协作了,甚至团队交流都可以通过Team Room来分布式进行了。
这里有一些相关文章,可以进行扩展阅读:
http://blogs.msdn.com/b/bharry/archive/2013/01/30/git-init-vs.aspx
http://blogs.msdn.com/b/visualstudioalm/archive/2013/01/30/getting-started-with-git-in-visual-studio-and-team-foundation-service.aspx
另外,我在TechEd2013的北京、上海站,都会主持敏捷协同开发相关的HOL(动手实验室)。欢迎大家参加:http://technet.microsoft.com/zh-cn/teched2013_hols