你好,我是小牛。
关于版本控制工具,基本是每一个IT人,不管是开发还是测试,运维都应该掌握的专业技能。
作为软件测试工程师,如果你不懂版本控制,那么很多开发之间的沟通交流像代码分支release,主分支master,代码冲突,代码仓库等等概念可能都处于懵逼状态。
先来说说公司为什么引入版本控制工具,它的实际用途是什么?这里主要讲三点,算是应用最多的。
一.版本管理
比如你的公司产品上线了一个新功能,开发写了二千行代码实现,但是上线后用户体验很差,老板要求去掉这个功能。
但是,这个时候总不可能一行一行人工删除吧,那谁还记得改了哪里。
这个时候就需要引入版本控制工具,实现代码回滚,可以自由回退到你之前修改提交代码的任何一个版本。
二.协同开发
除了那种只有个位数作坊式开发的创业公司,一个人负责一个完整项目外,但凡有点规模的企业,一个项目都不可能只有一个开发人员参与。
大家都是使用同一个工程项目,分别负责不同的功能模块。
可能A开发了两天,B需要在他的基础上继续开发。两个人还可以复制代码,那么有20个人呢?
所以就需要引入版本控制工具,来确保每次开发代码之前都可以拉到最新的代码库,所有人的代码都应该跟最新的代码库保持一致。
三.资源共享
不管是开发跟测试,产品,日常都会输出大量的文档,像测试用例,需求文档,接口文档,性能测试报告等等资源文件。
使用通讯软件来传输效率太低,这个时候就可以引入版本控制工具来实现对资源文件的统一管理。
企业中目前使用最多的版本控制工具主要有两种,一种是Git,另一种就是Svn。下面对比分析一下这两个工具。
Git和Svn最核心的区别就是Git为分布式管理系统,Svn为集中式管理系统。
集中式管理系统
集中式版本控制系统,代码资源库都集中放在一个服务器中。
当工作的时候就需要先从服务器拉取最新版本,写完代码或者修改完文件,再推送到中央服务器中。
分布式管理系统
而分布式管理系统不需要一个中央服务器,每个电脑都是一个完整的版本库。
A在自己本地修改了代码,B也在本地修改了代码。他们俩只需要把各自的修改推送给对方,就可以看到互相的修改。
两者的优劣就在于,分布式比集中式更加安全。
因为分布式每台电脑都有版本库,一个人坏掉了可以从另一个人那里复制。而集中式中央服务器出现问题,其他所有人都无法使用了。
除此之外,Git支持离线工作,就是在本地也可以操作,而Svn的使用必须要联网。如果无法连接到中央服务器,就无法提交代码,更别说还原对比等操作。
在分支管理上面,Git更加强大。svn如果要删除分支,就需要将远程分支删除,那么大家都得同步。而Git分支可以在本地操作,不同步到远程。
在访问控制,权限控制方面,svn做的更好。
Git没有严格的权限控制,一般是通过系统设置文件读写权限来做权限控制,工作目录只能是整个目录。而Svn可以单独设置某个目录的权限。
在学习成本方面,Git是命令行使用,Svn是小乌龟图形化界面,相对来说Svn学习成本更低,对新人更加友好。
关于使用哪个版本控制工具,不同公司都不一样,一般来说,如果对访问控制,权限分配和代码安全性要求高的,可以使用Svn。
如果是分布式,多人开发,版本迭代比较快的项目,可以使用Git更佳。
作为测试,最好两个工具都学习一下。