使用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 ...
随机推荐
- 【题解】 bzoj1207: [HNOI2004]打鼹鼠 (动态规划)
bzoj1207,懒得复制,戳我戳我 Solution: 挺傻逼的一个\(dp\),直接推就好了 这题在bzoj上的数据有点问题,题目保证每个时间点不会出现在同一位置两个地鼠,然而他有= =(还浪费我 ...
- 滥用基于资源约束委派来攻击Active Directory
0x00 前言 早在2018年3月前,我就开始了一场毫无意义的争论,以证明TrustedToAuthForDelegation属性是无意义的,并且可以在没有该属性的情况下实现“协议转换”.我相信,只要 ...
- LOJ#2983. 「WC2019」数树
传送门 抄题解 \(Task0\),随便做一下,设 \(cnt\) 为相同的边的个数,输出 \(y^{n-cnt}\) \(Task1\),给定其中一棵树 设初始答案为 \(y^n\),首先可以发现, ...
- (转)eclipse设置默认编码格式为UTF-8
设置 需要设置的几处地方为: Window->Preferences->General ->Content Type->Text->JSP 最下面设置为UTF-8,可以设 ...
- 数组初始化 memset fill
#include <cstdio> #include <cstdlib> #include <cmath> #include <cstring> #in ...
- Golang的文件处理方式-常见的读写姿势
Golang的文件处理方式-常见的读写姿势 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在 Golang 语言中,文件使用指向 os.File 类型的指针来表示的,也叫做文件句柄 ...
- 【1】ConcurrentModificationException 异常解析和快速失败,安全失败
目录 一.引起异常的代码 二.foreach原理 三.从ArrayList源码找原因 四.单线程解决方案 五.在多线程环境下的解决方法 一.引起异常的代码 以下三种的遍历集合对象时候,执行集合的rem ...
- Codeforces 923 A. Primal Sport
http://codeforces.com/contest/923/problem/A 题意: 初始有一个x0,可以选择任意一个<x0的质数p,之后得到x1为≥x0最小的p的倍数 然后再通过x1 ...
- bzoj千题计划249:bzoj5100: [POI2018]Plan metra
http://www.lydsy.com/JudgeOnline/problem.php?id=5100 1.找到d1[i]+dn[i] 最小的点,作为1到n链上的点 2.令链长为D,若abs(d1[ ...
- Here’s just a fraction of what you can do with linear algebra
Here’s just a fraction of what you can do with linear algebra The next time someone wonders what the ...