使用VS2013、TFS2013和Git进行分布式团队协作
题记:呵呵,首先声明,题目起的有点大,其实我只想介绍下VS2013和TFS2013新加入的Git功能,也不是在VS中使用Git的详细向导(以后有空再详细分享给大家)。这篇文章虽然在写这篇文章《Visual Studio 2013 发布正式版及使用感受》的时候,心中就有此打算,后来有朋友回复说让我介绍一下Git的使用,更是让我觉得很有必要介绍一下这方面的内容。可惜拖了这么久才开动。
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 发布正式版及使用感受》中找到答案。
Git客户端:VS2013
由于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服务器:TFS2013
在解决了Git客户端和开发工具集成的问题后,就需要解决服务器的问题。既然微软在CodePlex中都提供了Git支持,那么为何不在TFS中也提供呢,于是就有TFS2013对于Git的支持。Git理论上可以不需要一个服务器的,不过为了团队更好的协同,还是有必要架设一个中心Git仓库服务器,供大家pull和push用。而Git服务器有如下几种选择:
- GitHub、CodePlex或者CSDN CODE等开源项目托管服务器。GitHub也可以付费来托管闭源项目。
- 可以自己架设。可以使用Git默认的实现,也可以使用一个用ASP.NET MVC 4实现的http://bonobogitserver.com/来架设。
- 使用TFS服务,tfs.visualstudio.com。TFService在TFS2013发布之前(通过使用TFService就可以使用到TFS最新的特性,包括尚未正式发布的),就已经在提供Git的功能。创建团队项目的时候就可以选择使用TFVC还是Git,选定后无法更改。
- 架设内部的TFS2013服务器。在TFS2013中直接内置了Git服务器的实现,无需额外安装任何Git Server,理所当然Git的内容会保存在SQL Server数据库中。TFS2013的Git实现可以被任意客户端所连接。同样也是创建团队项目的时候可以选择使用那种源代码管理方式,选定后无法更改。
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
另外,我在TechEd2013的北京、上海站,都会主持敏捷协同开发相关的HOL(动手实验室)。欢迎大家参加:http://technet.microsoft.com/zh-cn/teched2013_hols
使用VS2013、TFS2013和Git进行分布式团队协作的更多相关文章
- 图文详解如何利用Git+Github进行团队协作开发
团队协作开发中,大部分都会用到版本控制软件,比如Git.Svn等.本文将通过一个实例,详细讲解在真实的工作环境中,一个团队应该如何利用Git+Github进行协作开发,即详解Git工作流程.并就其中比 ...
- 使用TFS+GIT实现分布式项目管理
前言 GIT是近来很流行的一种版本控制系统,是Linux内核之父Linus Torvalds为了管理Linux内核的开发而开发的一种开源的版本控制工具. GIT相比传统的版本控制工具最大的优点是实现了 ...
- 如何使用Git提高研发团队工作效率?
为什么使用Git 随着互联网时代的来临与发展,尤其分布式开发的大力引入,对于开发工程师来说,代码管理变成了头等难题.10多个人或者更多的成员的研发团队如何管理同一份代码,异地办公如何跟同事有效的维护同 ...
- 利用Git进行团队协作
前言: 这里简单介绍一下Git的历史. 同生活中的许多伟大事件一样,Git 诞生于一个极富纷争大举创新的年代.Linux 内核开源项目有着为数众广的参与者.绝大多数的 Linux 内核维护工作都花在了 ...
- 杂项:GIT (分布式版本控制系统)
ylbtech-杂项:GIT (分布式版本控制系统) Git是一款免费.开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目. Git的读音为/gɪt/.Git是一个开源的分布式版本控制系统 ...
- [转]VS2013中使用Git建立源代码管理
本文转自:https://blog.csdn.net/bodybo/article/details/38976549 第一次在VS2013中使用Git,也是第一次使用Git,各种不熟悉.百度各种使用经 ...
- VS2013中使用Git建立源代码管理
原文:http://blog.csdn.net/bodybo/article/details/38976549/ 第一次在VS2013中使用Git,也是第一次使用git,各种不熟悉.百度各种使用经验, ...
- VS2013中使用git发布解决方案master分支的时候出现错误
VS2013GIT基础用法请自行参考:不会Git命令,照样玩转Git 环境:VS2013+ 码云错误描述:在VS2013中使用git发布解决方案master分支的时候出现“无法将本地分支 master ...
- iOS开发——源代码管理——git(分布式版本控制和集中式版本控制对比,git和SVN对比,git常用指令,搭建GitHub远程仓库,搭建oschina远程仓库 )
一.git简介 什么是git? git是一款开源的分布式版本控制工具 在世界上所有的分布式版本控制工具中,git是最快.最简单.最流行的 git的起源 作者是Linux之父:Linus Bened ...
随机推荐
- 安装 oracle
先下载3个东西:链接忘记了,大家自己找一下 1 ORA+11+G+R2+server+64bit+for+windows.iso (oracle 安装文件) 2 PLSql 3 oracle6 ...
- Day12-navicat for sqlite 11.1.12 patch 永久使用版
参考来源:http://www.cnblogs.com/yueyue184/p/6407963.html 深深感谢!!! 因为最近需要用这个但是网上都是注册机没有成功注册,所以就自己动手使用ollyd ...
- HDU 6085 bitset
Rikka with Candies Time Limit: 7000/3500 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Other ...
- golang(01) linux环境搭建和编码
1 在自己的工作目录下建立一个goproject文件夹 /home/secondtonone/goproject 2 在文件夹下建立如下三个文件 bin pkg srcbin 保存执行go insta ...
- OpenStack 图形化服务 Horizon使用(十三)
构建一台云主机 上图中Count可以选择同时创建多台 最终“启动实例” 创建成功后,可以进入控制台,操作新建云主机
- IE盒模型和W3C盒子模型的区别
其实这个问题到现在真的是没有意义了,因为早在IE6的兼容模式开始就已经弃用了IE盒子模型了,但是现在的各种面试题还是会时常出现这样的上世纪的题目,我觉得其实时纯粹的刁难. 好了,吐槽不多说了,直接上图 ...
- Python基础【day01】:PyChram使用技巧总结(六)
本节内容 1.添加或者修改文件模板 2. python版本管理切换 3.已有文件重命名4.Python模块安装5.在PyChram中直接浏览文件目录6. 断点调试7.常用快捷键8.PyChram设置字 ...
- 翻译:探索GLSL-用几何着色器(着色器库)实现法线可视化
翻译:探索GLSL-用几何着色器(着色器库)实现法线可视化 翻译自: Exploring GLSL – Normal Visualizer with Geometry Shaders (Shader ...
- CSS图片下面产生间隙的6种解决方案
CSS图片下面产生间隙的6种解决方案 在进行页面的DIV+CSS排版时,遇到IE6(当然有时Firefox下也会偶遇)浏览器中的图片元素img下出现多余空白的问题绝对是常见的对於 该问题的解决方法也是 ...
- 20155232 2016-2017-3 《Java程序设计》第8周学习总结
20155232 2016-2017-3 <Java程序设计>第8周学习总结 教材学习内容总结 第十四章NIO与NIO2 NIO使用频道来衔接数据结点,在处理数据时,NIO可以让你设定缓冲 ...