比较TFS与SVN,你必须知道的10点区别

image
image 
th?&id=OIP.Ma04dcc79a9475b863a83c51e8de9b27eH0&w=253&h=219&c=0&pid=1.9&rs=0&p=0

相比SVN,对于TFS的优点我有以下几点看法,供大家参考:

1. 总体比较:

TFS是一个应用软件生命周期管理(ALM)软件,是一个软件研发平台产品,其功能覆盖了软件研发过程中的所有环节(包括源代码管理)和所有角色;而SVN只是一个简单的源代码管理工具。

可以简单来说,TFS具备SVN的所有源代码管理功能,二者是一个包含和被包含的关系。

2. 源代码功能比较:

单就源代码管理方面,TFS的优势在于:

1) 易用性。

在用户习惯上,TFS秉承了微软所有产品的特新,开发人员非常容易上手。软件使用过程中,用户会发现与日常导入操作系统、开发工具(VS),Office软件等有很多共同的体验。

2) 高度集成其他工具。

TFS高度集成主流的开发工具和常见的办公工具。

例如Visual Studio, Eclipse, XCode, ItelliJ,

例如Excel, 浏览器,Project

同时,TFS提供方便的API(.NET API, Java API, Rest API)集成,可以与企业现有的系统实现数据共享

3) 高度集成研发团队的工作项目

可以通过TFS的源代码,查询到代码变更的依据(需求、任务、Bug等)

反过来,可以通过项目管理的数据(需求、任务、Bug等),查询到相应代码的变动。例如,你可以查询到修复Bug所修改的代码行数。

4) 支持分布式代码库(Git)

除了支持集中式代码库(SVN属于此类),TFS还支持分布式的源代码库Git。这为TFS开拓了分布式代码管理的一个广阔天地,是SVN望成莫及的。

5) 搁置集

可以通过TFS将代码保持在服务器上,但是不签入到代码库中,实现将你的变更保存在服务器上一个临时的位置。这样,既备份了自己的代码,有不会影响其他团队成员的代码。

6) 代码评审

TFS提供基于开放工具的便捷的代码评审机制,可以实现研发团队内部之间的代码评审,或者与外部专家的代码评审。

7) 后台数据库存储

TFS的所有源代码和版本信息都存储在数据库中,在大型软件研发团队中,可以大幅提升数据的查询和存储速度。

同时,基于数据库存储,系统管理员可以方便的备份和还原TFS中的任何数据。

8) 代码搜索

TFS提供非常方便的代码搜索功能,开发人员可以在代码库中基于方法、类、对象等查询相关文件和代码。

9) 快速修改代码

你可以不需要任何开发工具,在浏览器上就可以完成代码的修改功能。

10) 自动化生成和发布

开箱即用的TFS就集成的自动生成和发布功能。可以实现修改代码以后,生成和发布自动完成;也可以在发布过程中增加流程控制,例如需要项目经理审批才能继续发布过程。

 

image

Figure 1 - Which one is better?

http://www.cnblogs.com/danzhang/  ALM MVP 张洪君

转载于:https://www.cnblogs.com/danzhang/p/5707116.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/430344.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

react textarea 空格为什么不换行_你需要的 React + TypeScript 50 条规范和经验

这篇文章没有对错之分,肯定也有不完善的地方,结合了自己日常开发和经验。可以让你书写代码更具严谨性,希望看完之后有所帮助。本文字数4000 ,看完本文大概需半小时。1. 注释(1) 文件顶部的注释,包括描述、作者、日期/** * descrip…

Java设计模式笔记(5)建造者模式

建造者模式:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 建造者模式的4个角色: Product产品类:通常是实现了模版方法模式,有模版方法和基本方法。 Builder抽象建造者:规…

Three.js基础探寻二——正交投影照相机

本篇主要介绍照相机中的正交投影照相机。   第一篇传送门:Three.js基础探寻一 1.照相机 图形学中的照相机定义了三维空间到二维屏幕的投影方式。 针对投影方式照相机分为正交投影照相机和透视投影照相机。 2.两种相机的区别与适用范围 正交投影: 透视投…

centos删除文件夹_等保测评主机安全之centos密码长度

密码长度,作为等级保护主机测评项里中密码复杂度要求之一,是必须要查的。在《等级测评师初级教程》里,对于密码长度的设置指向了/etc/login.defs里的PASS_MIN_LEN字段。# PASS_MIN_LEN Minimum acceptable password length.PASS_MIN_LEN …

【原创】Android之修改AlertDialog对话框及使用系统Holo风格

前一阵子在做伪装密码的功能,需要使用系统的对话框,对话框需要加长按事件等等。哈,直接上代码,我是比较喜欢直接看代码的。 1. 获取AlertDialog的Title final int alertTitleId getResources().getIdentifier( "alertTitle…

Activity的四种启动模式-图文并茂

1、对于使用standard 模式的活动,系统不会在乎这个活动是否已经在返回栈中存在,每次启动都会创建该活动的一个新的实例。例如A启动A,A再接着启动A,A继续启动A,然后再分别出栈,如图所示2、当活动的启动模式指…

ajax如何提交多表单的值_25 HTML5表单基本控件(二)

成长是一辈子的事儿!大家好!我是时问新。分享前端、Python等技术,以及个人成长路上的那些事儿。密码框使用标签,把标签上的type属性的值,设置为"password",就可以创建密码框。密码框和单行文本框…

Java设计模式笔记(6)观察者模式

观察者模式,也叫发布订阅模式,定义对象之间的一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并被自动更新。 观察者模式的几个角色: Subject被观察者:定义被观察者必须…

android_studio上传svn的时候那些不提交

buid文件夹不需要提交 转载于:https://www.cnblogs.com/YangBinChina/p/5708510.html

python语音分割_用7行Python代码构建自己的有声读物

点击关注我哦欢迎关注 “小白玩转Python”,发现更多 “有趣”有声读物是我们可以通过音频听取一本书或者其他作品的内容,是现下一种很受欢迎的阅读方式。类似的APP有:喜马拉雅、得到和樊登读书等。但是如果你有一本pdf格式的书籍,…

循环所有数据库执行脚本

这里仅仅提供一个事例,抛砖引玉,如果对您起到丁点作用,那是在下的荣幸 select name into #dbname from sys.databases where name like edb_a% and name not like %_dw select name,ROW_NUMBER() over (order by name asc) from #dbname d…

Java设计模式笔记(7)适配器模式

适配器模式定义:将一个类的接口变成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。适配器模式(Adapter Pattern),适配器模式又叫做变压器模式,也叫做包装模式&…

stata生成脉冲响应图怎么导出_Stata:面板VAR模型(pvar2命令)

🌈2021年寒假Stata研讨班:高级计量经济学及Stata应用研讨班👉2021空间计量研讨班:空间计量及Geoda、Stata、ArcGis、Matlab应用PVAR这个程序最初是由Inessa Love编写的。它允许用户估计面板向量自回归和产生方差分解和脉冲响应函数…

Java设计模式笔记(8)装饰模式

装饰模式:动态地给一个对象添加一些额外的职责(以对客户端透明的方式扩展对象的功能),就增加功能来说,装饰模式相比生成子类更为灵活,是继承关系的一个替代方案。 装饰模式的四个角色: 抽象构…

python中的引用怎么理解_python 引用和对象理解

今天浏览博客的时候看到这么一句话: python中变量名和对象是分离的;最开始的时候是看到这句话的时候没有反应过来。决定具体搞清楚一下python中变量与对象之间的细节。(其实我感觉应该说 引用和对象分离 更为贴切) 从最开始的变量…

取MapString,sitemap中的全部key

Map<String,Site> siteMap conference.getSiteList(); Set<String> keyList siteMap.keySet();//得到key集合 Iterator<String> it keyList.iterator();//遍历key while(it.hasNext()){ ConfModelVsDept ConfModelVsDept new ConfModelVsDept(); String …

AIDL Service,跨进程调用Services

一、AIDL Service简介 Android系统中&#xff0c;各个应用都运行在自己的进程中&#xff0c;进程之间一般无法直接进行通信&#xff0c;为了实现进程通信&#xff0c;Android提供了AIDL Service&#xff1b; 二、与本地Service不同 本地Service&#xff1a;直接把IBinder对象…

一台电脑同时启动多个java_如何在一台同时登录多个微信?

点击上方蓝字关注我相信大家对手机上的微信双开并不陌生&#xff0c;很多人由于工作需要&#xff0c;需要多开一个甚至多个微信。对于安卓手机来说&#xff0c;双开微信并不是什么难事。现在大部分国产安卓手机都自带微信双开功能(一般在设置里面搜索“分身”或者“双开”就能找…

利用Python进行数据分析(1) 简单介绍

一、处理数据的基本内容 数据分析 是指对数据进行控制、处理、整理、分析的过程。 在这里&#xff0c;“数据”是指结构化的数据&#xff0c;例如&#xff1a;记录、多维数组、Excel 里的数据、关系型数据库中的数据、数据表等。 二、说说 Python 这门语言 Python 是现在最受…

python每周小测验答案_python第一周小测验答案Centos下更新Python版本

Centos下更新Python版本&#xff0c;有需要的朋友可以参考下。 注意&#xff1a;更新python千万不要把老版本的删除&#xff01;新老版本是可以共存的&#xff0c;很多基本的命令、软件包都要依赖预装的老版本python的&#xff0c;比如yum。 更新python&#xff1a; 第1步&…