如果要选出最近几年在软件工程领域最热的技术,那毋庸置疑就是git了。作为分布式源代码管理(DVCS)的代表,git以其超快的操作,便捷的分支合并模型和P2P模式的代码分享模式让软件开发团队的很多复杂协作成为可能,也大大提高了开发团队的效率。虽然如此,集中式的源代码管理(CVCS)仍然在很多大型软件团队中使用,这其中自然有历史原因,但集中式源代码控制所具备的很多特性也是分布式所不具备的,比如:代码资产的安全性,细化到文件级别的权限管理能力(使用某些插件或者hook,git也可以做到,但这不是git内置的功能),对签出权限的独立控制,大型二进制文件的存储效率。

在TFS和VSTS中,从2012年开始提供了GIT的支持,但是我们一直不能在同一个项目中混合使用集中式的TFVC和分布式的GIT,这让很多希望尝试GIT的用户不得不创建新的基于GIT的项目,并将原有的代码导入到新的项目中,如果同时还在使用工作项和构建等其他功能,就不得不在不同的项目之间进行切换才能完成某些操作。在TFS 2015 UPDATE 1中,这一情况已经得到改变,你可以很容易的在一个已有的项目中添加TFVC/GIT的存储库。

基于本文开始所述的原因,有些团队可能会选择同时使用2种配置库,也可能会将项目的某一部分迁移至GIT而保留其他部分在TFVC中。一般来说,我们需要综合考虑以下因素:

  • -配置库中是否保存了大量的二进制文件,如:WORD文档,EXCEL文档等。很多团队将项目文档也纳入配置库管理范畴,这种情况非常普遍。对于开发人员来说,学习和使用GIT不是什么问题,但是对于非技术人员就会很困难,所以这部分我们建议保留在TFVC中并给非技术人员安装TFS PowerTools,让他们可以在文件管理器中直接签入签出代码。
  • 某些需要文件级别权限管理的项目,一般在大型企业或者存在外包团队的情况下会比较需要这种安全性配置。
  • 对于某些超大型的项目,我们往往会将的项目放入独立的repo中进行管理,如:将$/TeamProjectA/Main/Project1 转换到独立的GIT库,将Project2转换到另外一个GIT库

TFVC至GIT的迁移方案(保留历史纪录)
如果你之前使用的是TFVC,那么你可以使用以下命令将服务器上的TFVC库先转换成本地的GIT库,然后再签入到新创建的GIT库中。

# 这里的--deep参数将会确保所有的TFVC changeset可以转换被本地GIT库的commit历史
# $/TeamProjectA/Main 这个路径可以指向配置库中的任何子路径,这样我们可以按照项目分离成不同的repo
git-tf clone http://myserver:8080/tfs $/TeamProjectA/Main --deep
# 使用git remote将本地库链接到远程的git库上,并推送代码
git remote add origin http://myserver:8080/tfs/{collectionName}/{projectName}/_git
git push -u origin --all

这样你就可以在全新的GIT库上开始工作了,如果这些不同的repo之间存在引用关系,那么你可以采用git sub module或者package manager的方法来解决跨库的引用问题。

总体来说,将一个TFVC转换成GIT库的时候我们需要考虑集中和分布式的优劣,项目结构和团队协作模型的影响,这样才能设计出最优化的配置库结构。
参考:
TFS Power Tools 是微软提供的TFS扩展插件,其中包括可以让用户直接在Windows文件管理器中右键点击文件进行签入签出的功能
下载地址:
https://visualstudiogallery.msdn.microsoft.com/898a828a-af00-42c6-bbb2-530dc7b8f2e1

git-tf 是微软提供的TFS扩展工具,可以将TFVC配置库转换成GIT库并保持同步
下载地址:
https://visualstudiogallery.msdn.microsoft.com/898a828a-af00-42c6-bbb2-530dc7b8f2e1


关注公众微信号 DevOps

混合使用TFVC和GIT配置库的优化方案的更多相关文章

  1. [记录]NGINX配置HTTPS性能优化方案一则

    NGINX配置HTTPS性能优化方案一则: 1)HSTS的合理使用 2)会话恢复的合理使用 3)Ocsp stapling的合理使用 4)TLS协议的合理配置 5)False Start的合理使用 6 ...

  2. Tomcat 配置详解/优化方案

     转自:http://blog.csdn.net/cicada688/article/details/14451541 Service.xml Server.xml配置文件用于对整个容器进行相关的配置 ...

  3. tomcat配置详解/优化方案

    Service.xml Server.xml配置文件用于对整个容器进行相关的配置. <Server>元素:是整个配置文件的根元素.表示整个Catalina容器. 属性:className: ...

  4. Tomcat 配置详解/优化方案(转)

    转载地址:https://blog.csdn.net/cicada688/article/details/14451541/ Service.xml Server.xml配置文件用于对整个容器进行相关 ...

  5. 【Git】3、创建Git版本库、配置Git仓库用户邮箱信息

    初识Git 文章目录 初识Git 1.创建Git版本库 认识.git 2.基础配置 2.1.查看配置信息 2.2.配置昵称邮箱信息 2.3.修改配置信息 1.通过命令行 2.通过修改配置文件. 修改全 ...

  6. 微软打造了全球最大的Git代码库

    丹棱君有话说:今年 2 月,微软宣布将用 Git 管理 Windows 源代码.随后,Visual Studio 宣布开发 “Git 虚拟文件系统(GVFS)”,并将在终极项目和超大型团队中推行 Gi ...

  7. git使用,Git的skil-map,git配置http/https/socks5代理

    . 检出.克隆库: git clone git://git.openwrt.org/openwrt.git 2. git查看某个文件的修改历史 git log --pretty=oneline 文件名 ...

  8. redmine整合GIT版本库

    redmine整合GIT版本库   服务器的环境: Ubuntu 11.10 64位 Redmine 1.4.5.stable.10943 git version 1.7.5.4 + gitolite ...

  9. Git配置和一些常用命令

    Git:常用命令.... git clone <repo> git config –list git diff –staged add后,commit前的撤销:git rm –cached ...

随机推荐

  1. iOS阶段学习第六天笔记(数组)

                                                                                                  iOS学习( ...

  2. Firemonkey 控件设定字型属性及颜色

    将控件 StyledSettings 的勾取消(如此才能自定样式及字型,如果勾选则依 Style 而定). 设定 TextSettings 里的 Font 属性. 使用代码寫法: CheckBox1. ...

  3. Maven+Spring+Spring MVC+MyBatis+MySQL,搭建SSM框架环境

    项目建设完成之后的结构: 数据库的表结构如下: 环境建设:搭建Maven环境.Tomcat环境.需要MySql 数据库支持,使用的编程工具Eclipse (这些是前期准备): 开始创建工程: 1.创建 ...

  4. Android总结篇系列:Android Intent

    Intent在Android中的重要性不言而喻.本文主要总结下Intent使用过程中需要注意的一些问题. 1.隐式Intent AndroidManifest.xml声明时<intent-fil ...

  5. HTML 限制文本框只能输入特定字符(比如数字 onkeyup+onafterpaste)

    正则表达式1 <td><asp:TextBox ID="TextBox_username" Width="250" runat="s ...

  6. SQLSERVER 2012计算上一条,下一条数据的函数

    实际需求很普遍,比如求销售数据的每天与头一天的销售增长量.这里用一个汽车行驶数据来做例子: 先初始化数据: CREATE TABLE [dbo].[CarData]( [CarID] [int] NU ...

  7. prototype和__proto__

    一.prototype和__proto__的概念 prototype是函数的一个属性(每个函数都有一个prototype属性),这个属性是一个指针,指向一个对象.它是显示修改对象的原型的属性. __p ...

  8. texrecon进行纹理映射

    使用texrecon进行纹理映射: 1)       跳转到mesh所在目录 cd meshdir 2)       参数 a)         texrecon.exe b)         bun ...

  9. Planetary.js:帮助你构建超炫的互动球体效果

    Planetary.js 是一个 JavaScript 库,用于构建互动球体效果.它使用 D3 和 TopoJSON 解析和渲染地理数据.Planetary.js 采用了基于插件的架构,即使是默认的功 ...

  10. 从0开始学angularjs-笔记04

    由于公司加班,刚到家不久,然而却毫无睡意,可能是老了吧--- 不废话了,没睡意那就做点有意义的事情吧,继续我们的angular学习之路,深夜博文,希望能造福大家! 这次我们来详细讲解angular的双 ...