GitLab与SVN的对比

源代码管理工具优点缺点

SVN

主要功能:SVN属于集中化的版本控制系统,使用起来有点像是档案仓库的感觉,支持并行读写文件,支持代码的版本化管理,功能包括取出、导入、更新、分支、改名、还原、合并等。SVN大都采用图形界面操作,直观,上手快。

优点:管理方便,逻辑明确,符合一般人思维习惯;易于管理,集中式服务器更能保证安全性;代码一致性非常高。 SVN对中文支持好,操作简单,使用没有难度,美工人员,产品人员,测试人员,实施人员都可轻松上手。使用界面统一,功能完善,操作方便。

缺点:占用存储容量大,关心所有的文件类型;如果不能连接到服务器上,基本上不可以工作;不适合开源开发

建议:SVN能清楚的按目录进行分类管理, 使项目组的管理处于有序高效的状态,SVN更适用于项目管理


Git

主要功能:Git是一个分布式版本控制系统,操作命令包括:clone,pull,push,branch ,merge ,push,rebase,Git擅长的是程序代码的版本化管理。

优点:对程序源代码进行差异化的版本管理,代码库占极少的空间。易于代码的分支化管理。不支持中文,图形界面支持差,使用难度大。不易推广。

缺点:不支持中文,图形界面支持差,使用难度大。不易推广

建议:Git更适用于代码管理。

Git是分布式的,SVN是集中式的。 这是Git和SVN的最大区别。 如果能把握这个概念的话,两者的区别基本上可以明白大半。 由于Git是分布式的,因此Git支持脱机工作,并且可以在本地执行许多操作,包括即将推出的分支功能。 SVN必须连接到网络才能正常工作。

集中式版本控制系统有一个单一的集中式服务器,用于存储所有文件的修订,协作者通过客户端连接到此服务器,以检索最新文件或提交更新。

Git复杂概念多,SVN简单易上手

所有同时掌握 Git 和 SVN 的开发者都必须承认,Git 的命令实在太多了,日常工作需要掌握add,commit,status,fetch,push,rebase等,若要熟练掌握,还必须掌握rebase和merge的区别,fetch和pull的区别等,除此之外,还有cherry-pick,submodule,stash等功能,仅是这些名词听着都很绕。

在易用性这方面,SVN 会好得多,简单易上手,对新手很友好。但是从另外一方面看,Git 命令多意味着功能多,若我们能掌握大部分 Git 的功能,体会到其中的奥妙,会发现再也回不去 SVN 的时代了。

Git分支廉价,SVN分支昂贵

在版本管理里,分支是很常使用的功能。在发布版本前,需要发布分支,进行大需求开发,需要 feature 分支,大团队还会有开发分支,稳定分支等。在大团队开发过程中,常常存在创建分支,切换分支的需求。

Git 分支是指针指向某次提交,而 SVN 分支是拷贝的目录。这个特性使 Git 的分支切换非常迅速,且创建成本非常低。

而且 Git 有本地分支,SVN 无本地分支。在实际开发过程中,经常会遇到有些代码没写完,但是需紧急处理其他问题,若我们使用 Git,便可以创建本地分支存储没写完的代码,待问题处理完后,再回到本地分支继续完成代码。

THE END