如何选择版本控制系统 ---为什么选择Git版本控制系统
版本控制系统
“代码”作为软件研发的核心产物,在整个开发周期都在递增,不断合入新需求以及解决bug的新patch,这就需要有一款系统,能够存储、追踪文件的修改历史,记录多个版本的开发和维护。于是,版本控制系统(Version Control Systems)应运而生,主要分为两类,集中式和分布式。
集中式版本控制系统
集中式版本控制系统的特点是只有一台中央服务器,存放着所有研发数据,而其它客户端机器上保存的是中央服务器最新版本的文件快照,不包括项目文件的变更历史。所以,每个相关人员工作开始前,都需要从这台中央服务器同步最新版本,才能开始工作。

集中式版本控制系统的优点:
1.操作简单,使用没有难度,可轻松上手。
2.文件夹级权限控制,权限控制粒度小。
3.对客户端配置要求不高,无需存储全套代码。
集中式版本控制系统的缺点:
1.网络环境要求高,相关人员必须联网才能工作。
2.中央服务器的单点故障影响全局,如果服务器宕机,所有人都无法工作。
3.中央服务器在没有备份的情况下,磁盘一旦被损坏,将丢失所有数据。

分布式版本控制系统
分布式版本控制系统的特点是每个客户端都是代码仓库的完整镜像,包括项目文件的变更历史。所有数据分布的存储在每个客户端,不存在中央服务器。可能有人会问,我们公司使用Git分布式存储工具,也有“中央服务器”啊?其实,这个所谓的“中央服务器”仅仅是用来方便管理多人协作,任何一台客户端都可以胜任它的工作,它和所有客户端没有本质区别。

分布式版本控制系统的优点:
1.版本库本地化,版本库的完整克隆,包括标签、分支、版本记录等。
2.支持离线提交,适合跨地域协同开发。
3.分支切换快速高效,创建和销毁分支廉价。
分布式版本控制系统的缺点:
1.学习成本高,不容易上手。
2.只能针对整个仓库创建分支,无法根据目录建立层次性的分支。

SVN vs Git
SVN和Git作为集中式和分布式版本控制系统的代表,都有广大的使用群体,两者的优缺点经常被比较。其实,工具对我们来说,就是帮助我们有效提升工作的效率与质量,最适合的就是最好的。我们引用几个开发场景来看看两个版本控制工具的适用范围。
场景一:
公司A,非纯技术开发,项目包含大量媒体设计文件,相关人员只需下载自己关注的部分文件;员工PC电脑配置不高,没有空间拷贝整个项目资料。
适用:SVN
分析:只需公司有一个足够大的服务器硬盘,员工本地只存储自己相关的文件夹,不必下载不想关的媒体文件,避免浪费文件传输时间。
场景二:
公司B,嵌入式底层开发,项目人员较多并且分布在两个城市,代码庞大;用分支管理多机种并行开发,机种间经常相互合并新特性,新patch。
适用:Git

分析:
1.Git有能力高效管理类似Linux内核一样的超大规模项目;
2.Git实现了离线开发、代码审核特性,解决了跨地域协同开发中代码质量和编码协同的问题;
3.分支管理功能强大,便于查询和追溯分支间的提交历史;
4.Git基于DAG(有向非环图)的设计比SVN的线性提交提供更好的合并追踪,避免不必要的冲突,提高工作效率
场景三:
公司C,某行业软件开发,包含敏感重要数据,代码仓库和版本发布权限掌握在客户手中,代码安全要求高,公司开发人员先将代码提交到本地仓库,只有在客户审核通过才能提交到发布仓库。
适用:Git
分析:
1.Git通过哈希加密保证数据的完整性,防止恶意篡改;
2.代码分布存储,异地容灾,保证数据安全;
3.Git支持团队成员自建本地版本库和分支,只有客户发出合并请求,开发人员才能提交代码,客户可以对提交说明、代码规范等方面逐一审核。
总结
不难看出,Git凭借自身的优势,完美解决了大多数公司对版本控制工具的诉求。在当今敏捷开发成为主流,研发周期短,跨地域协同开发多的大形势下,选择Git是大势所趋。也正因为如此,国内外有很多基于Git的云端代码托管服务,目前,作者就正在使用华为软件开发云(https://www.hwclouds.com/devcloud/)配置管理服务托管代码,后面我也会详细介绍它的使用方法。
如何选择版本控制系统 ---为什么选择Git版本控制系统的更多相关文章
- git版本控制系统重新认识
git 版本控制系统 目标:完全搞懂git分布式版本控制系统 搭建git版本控制系统 cvs集中化版本控制系统--集中式管理的服务器 git分布式版本控制系统--会将原始代码仓库镜像下来 新项目使用g ...
- Google Code项目代码托管网站上Git版本控制系统使用简明教程
作为一个著名的在线项目代码托管网站,Google Code目前主要支持三种版本控制系统,分别为Git, Mercurial和 Subversion.Subversion即SVN相信大家都已经熟知了,这 ...
- Git版本控制系统之基本使用
最早是通过接触著名的开源社区Github了解到Git的,但一直没有系统学习过.这次下定决心从头到尾系统的学一学,也将学习过程记录于此,供大家批驳.本篇文章先从以下几个方面简单了解一下Git: Git的 ...
- git版本控制系统小白教程(上)
前言:本文主要介绍git版本控制系统的一些基础使用,适合小白入门,因为内容较多,会分为两部分进行分享. Git介绍 Git是目前世界上最先进的分布式版本控制系统.并且它是一个开源的分布式版本控制系 ...
- git版本控制系统小白教程(下)
前言:本文主要介绍git版本控制系统的一些基础使用,适合小白入门,因为内容较多,会分为两部分进行分享,查看上部请点传送门. 删除文件 git删除文件一般有三种情况,第一种是在工作区修改了文件,但是 ...
- 初识git版本控制系统
当下git分布式版本控制系统越来越火,掌握git也是必须的一个技能.因此,对git做了如下学习. Git初级指南 1. 先安装git.(ps:在select cmponents处要勾选Git Bash ...
- git版本控制系统常见操作总结
简介 Git是强大的版本控制系统,主要功能是针对代码.配置文件等文本进行版本控制.备份等,同时个人认为还是分发代码的一个不错的方式. 常见用法 #创建远程git仓库 [root@test88 ~]# ...
- Git学习系列之集中式版本控制系统vs分布式版本控制系统
不多说,直接上干货! Linus一直痛恨的CVS及SVN都是集中式的版本控制系统,而Git是分布式版本控制系统,集中式和分布式版本控制系统有什么区别呢? 先说集中式版本控制系统,版本库是集中存放在中央 ...
- Git版本控制系统VCS
Git版本控制系统VCS 一.版本控制系统基本情况说明 版本控制是一种记录一个或者若干个文件内容的变化,以便将来查阅特定版本修订情况的系统 1.作用 记录文件的所有历史变化 随时可回复到任何一个历史状 ...
随机推荐
- Tcl与Design Compiler (十)——其他的时序约束选项(一)
本文属于原创手打(有参考文献),如果有错,欢迎留言更正:此外,转载请标明出处 http://www.cnblogs.com/IClearner/ ,作者:IC_learner 之前讲了基本的时序路径 ...
- 手机自动化测试:appium源码分析之bootstrap三
手机自动化测试:appium源码分析之bootstrap三 研究bootstrap源码,我们可以通过代码的结构,可以看出来appium的扩展思路和实现方式,从中可以添加我们自己要的功能,针对app ...
- Fragment深入解析
写在顶部表示这点很重要: 本文转载自博客:http://blog.csdn.net/lmj623565791/article/details/37970961 欢迎访问原文 自从Fragment ...
- day001-html知识点总结(二)不常见但很重要的元素汇总
一..vertical-align:设置垂直对齐方式,主要用于: 1.单元格内容的垂直对齐 2.对于行内块级元素,如<img>,设置行内元素的基线相对于该行内块级元素的所在行的基线对齐,例 ...
- 5 安装Alloc服务
cnblogs-DOC 1.服务器环境 2.安装Redis3.安装Zookeeper4.安装MPush5.安装Alloc服务6.完整测试7.常见问题 一.Linux安装Mpush-Alloc [roo ...
- NSUserDefaults registerDefaults
NSUserDefaults除了保存和读取功能外,还为我们提供了一个很便捷的方法:registerDefaults. func registerDefaults(registrationDiction ...
- lua 条件控制
lua 条件控制 if 语句 结构 if (condition) then statements end 示例程序 local a = 10 if (a > 1) then print(&quo ...
- dispatch_group_t 日常使用注意事项
一.背景简介平时在进行多线程处理任务时,有时候希望多个任务之间存在着一种联系,希望在所有的任务执行完后做一些总结性处理.那么就可以将多个任务放在一个任务组中进行统一管理.dispatch提供了相应的A ...
- MySQL 事务与锁机制
下表展示了本人安装的MariaDB(10.1.19,MySQL的分支)所支持的所有存储引擎概况,其中支持事务的有InnoDB.SEQUENCE,另外InnoDB还支持XA事务,MyISAM不支持事务. ...
- 腾讯实习面经(offer)
腾讯的实习招聘也算是告一段落了.从内推到正式实习生招聘,总结一下.看了这么多面经,也把自己的经历写一下,有需要的朋友可以参考一下.毕竟互帮互助嘛. 内推 腾讯内推的经历比较惨淡,面了三个部门,都跪在一 ...