混合使用TFVC和GIT配置库的优化方案
如果要选出最近几年在软件工程领域最热的技术,那毋庸置疑就是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配置库的优化方案的更多相关文章
- [记录]NGINX配置HTTPS性能优化方案一则
NGINX配置HTTPS性能优化方案一则: 1)HSTS的合理使用 2)会话恢复的合理使用 3)Ocsp stapling的合理使用 4)TLS协议的合理配置 5)False Start的合理使用 6 ...
- Tomcat 配置详解/优化方案
转自:http://blog.csdn.net/cicada688/article/details/14451541 Service.xml Server.xml配置文件用于对整个容器进行相关的配置 ...
- tomcat配置详解/优化方案
Service.xml Server.xml配置文件用于对整个容器进行相关的配置. <Server>元素:是整个配置文件的根元素.表示整个Catalina容器. 属性:className: ...
- Tomcat 配置详解/优化方案(转)
转载地址:https://blog.csdn.net/cicada688/article/details/14451541/ Service.xml Server.xml配置文件用于对整个容器进行相关 ...
- 【Git】3、创建Git版本库、配置Git仓库用户邮箱信息
初识Git 文章目录 初识Git 1.创建Git版本库 认识.git 2.基础配置 2.1.查看配置信息 2.2.配置昵称邮箱信息 2.3.修改配置信息 1.通过命令行 2.通过修改配置文件. 修改全 ...
- 微软打造了全球最大的Git代码库
丹棱君有话说:今年 2 月,微软宣布将用 Git 管理 Windows 源代码.随后,Visual Studio 宣布开发 “Git 虚拟文件系统(GVFS)”,并将在终极项目和超大型团队中推行 Gi ...
- git使用,Git的skil-map,git配置http/https/socks5代理
. 检出.克隆库: git clone git://git.openwrt.org/openwrt.git 2. git查看某个文件的修改历史 git log --pretty=oneline 文件名 ...
- redmine整合GIT版本库
redmine整合GIT版本库 服务器的环境: Ubuntu 11.10 64位 Redmine 1.4.5.stable.10943 git version 1.7.5.4 + gitolite ...
- Git配置和一些常用命令
Git:常用命令.... git clone <repo> git config –list git diff –staged add后,commit前的撤销:git rm –cached ...
随机推荐
- 一道java算法题分析
最近在面试中遇到这样的一道算法题: 求100!的结果的各位数之和为多少? 如:5!=5*4*3*2*1=120,那么他们的和为1+2+0=3这道题不算难,不过倒是注意的细节也有 ...
- WPF学习之绘图和动画
如今的软件市场,竞争已经进入白热化阶段,功能强.运算快.界面友好.Bug少.价格低都已经成为了必备条件.这还不算完,随着计算机的多媒体功能越来越强,软件的界面是否色彩亮丽.是否能通过动画.3D等效果是 ...
- 算法實例-C#-歸併排序-MergeSort
# 算法实例 # 排序算法Sort 歸併排序MergeSort 算法說明 歸併的思路是任意兩個元素可以比較大小,那麼任意兩個有序的元素集合也可以通過比較大小的方式歸併成一個有序的元素集合 任何的無序元 ...
- structs常见错误
原因:打开struts-default.xml文件 解决办法: 重启Myeclipse
- Redis配置集群一(window)
因为接下来的项目要使用到redis作为我们项目的缓存,所以就花了一天时间研究了一下redis的一些用法,因为没转linux虚拟机,所以就决定先研究一下windows版本的redis集群.主要是redi ...
- 第 29 章 CSS3 弹性伸缩布局[上]
学习要点: 1.布局简介 2.旧版本 主讲教师:李炎恢 本章主要探讨 HTML5 中 CSS3 提供的用来实现未来响应式弹性伸缩布局方案,这里做一个初步的了解. 一.布局简介 CSS3 提供一种崭新的 ...
- 2015-2016 ACM-ICPC Nordic Collegiate Programming Contest ---E题Entertainment Box(有点变化的贪心)
提交链接 http://codeforces.com/gym/100781/submit Description: Ada, Bertrand and Charles often argue over ...
- PostgreSQL除法保留小数
select round(1::numeric/4::numeric,3);结果为0.25 select round( cast ( 1 as numeric )/ cast( 4 as numeri ...
- lodash常用方法1--查询
1.find var _ = require('lodash'); var user1 = { name: 'zhangsan', height: 180, weight: 120 }; var us ...
- Web 开发最有用的50款 jQuery 插件集锦——《综合篇》
这篇文章是<Web 开发最有用的50款 jQuery 插件集锦>系列的最后一篇,整个系列向大家分享了在网站开发中非常有帮助的 50 款 jQuery 插件,这些插件按用途主要有以下类别:网 ...