如何选择版本控制系统

版本控制系统

“代码”作为软件研发的核心产物,在整个开发周期都在递增,不断合入新需求以及解决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/)配置管理服务托管代码,后面我也会详细介绍它的使用方法。

时间: 2024-12-07 11:17:47

如何选择版本控制系统的相关文章

如何选择版本控制系统之二

之前写了一篇<如何选择版本控制系统 ---为什么选择Git版本控制系统>,地址是:http://www.cnblogs.com/goldenfish/p/6876864.html,有兴趣的可以去看看,本篇文章算是这个系列的第二篇文章. Git诞生于2002年,由Linux之父Linus Torvalds和他的团队开发并不断完善,它秉承了Linux的开源精神,为广大研发团队带来了非常棒的版本控制体验.本文立足Git的工作原理,深入探讨各种研发场景中工作流等问题. Git工作模式 代码提交过程 一

如何选择版本控制系统之二---Git的研发应用场景

之前写了一篇<如何选择版本控制系统 ---为什么选择Git版本控制系统>,地址是:http://laoyudage.blog.51cto.com/12854334/1927409,有兴趣的可以去看看,本篇文章算是这个系列的第二篇文章. Git诞生于2002年,由Linux之父Linus Torvalds和他的团队开发并不断完善,它秉承了Linux的开源精神,为广大研发团队带来了非常棒的版本控制体验.本文立足Git的工作原理,深入探讨各种研发场景中工作流等问题. Git工作模式 代码提交过程 一

如何选择版本控制系统之三

往期文章: <如何选择版本控制系统 ---为什么选择Git版本控制系统> <如何选择版本控制系统之二---Git的研发应用场景> 跨地域开发的需求其实由来已久,并在IT/互联网高速发展的今天越来越普遍,这正是Git版本管理广泛流程的技术原因之一.对于一个开发者如何将本地代码提交到中央仓库,是保证高效异地协同的前提.本文将着重介绍将本地代码提交到托管平台的基本操作. 客户端工具:SourceTree 托管平台:华为软件开发云 如何将本体代码提交到托管平台 1.本地git工具安装&am

如何选择版本控制系统之三---代码托管操作

往期文章: <如何选择版本控制系统 ---为什么选择Git版本控制系统> <如何选择版本控制系统之二---Git的研发应用场景> 跨地域开发的需求其实由来已久,并在IT/互联网高速发展的今天越来越普遍,这正是Git版本管理广泛流程的技术原因之一.对于一个开发者如何将本地代码提交到中央仓库,是保证高效异地协同的前提.本文将着重介绍将本地代码提交到托管平台的基本操作. 客户端工具:SourceTree 托管平台:华为软件开发云 如何将本体代码提交到托管平台 1.本地git工具安装&am

如何选择版本控制系统之二---Git的研发应用场

之前写了一篇<如何选择版本控制系统 ---为什么选择Git版本控制系统>,地址是:http://www.cnblogs.com/goldenfish/p/6876864.html,有兴趣的可以去看看,本篇文章算是这个系列的第二篇文章. Git诞生于2002年,由Linux之父Linus Torvalds和他的团队开发并不断完善,它秉承了Linux的开源精神,为广大研发团队带来了非常棒的版本控制体验.本文立足Git的工作原理,深入探讨各种研发场景中工作流等问题. Git工作模式 代码提交过程 一

如何选择版本控制系统 ---为什么选择Git版本控制系统

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

远成文件的版本控制系统~~~浅析

远成文件的版本控制系统 ~~~~浅析 问题描述 大多数基于C/S模式的应用软件都存在客户端的版本更新问题.通常的解决方案是服务器端提供一个UpdateServer为每一个Client提供版本更新服务.更好一点的方案是在一个小型的局域网内部实现LocalUpdata,然后再与UpdateServer连接.解决方案一LocalUpdate: 每一个Client程序启动时,首先开始一个ServerThread并申请一个本地端口(每个Client的监听段口应一致,以便能收到Client发来的升级信息广播

[.net 面向对象程序设计进阶] (25) 团队开发利器(四)分布式版本控制系统Git——使用GitStack+TortoiseGit 图形界面搭建Git环境【转】

转自:http://www.cnblogs.com/yubinfeng/p/5182271.html 前面介绍了两款代码管理工具VSS和SVN,这两种管理工具在很长一段时间曾为我们的代码管理提供了便利,本篇介绍一款思维方式完全不同(也可以说不合常理)的版本控制系统——Git.可以说Git目前非常火,这与设计者剑指偏锋的设计思想有很大关系.Git采用发散的思维管理代码,最大的特点就是分布式,他可以让来自不同地区的开发者共同完成一个作品,让每个开发者都可以发挥个性,同时又可以由发起者(即项目管理者)

TortoiseSVN与VisualSVN Server搭建SVN版本控制系统【转】

转自:http://www.cnblogs.com/xing901022/p/4399382.html 本片主要介绍如何搭建SVN版本控制系统,主要使用工具: 1 客户端:TortoiseSVN (小乌龟) 2 服务端:VisualSVN Server 搭建出图形化管理,以及右键菜单版本控制管理的SVN系统. 背景知识 首先要了解SVN是一种集中式管理代码的版本控制系统,原理就是 把代码都保存到一个固定的位置,每次从这个位置拷贝更新代码,进行编辑:再把修改后的代码提交到该目录中. 多人协作开发也