00:00
好了同学们,那咱们接下来就看一下这个版本控制工具啊,大家注意啊,咱们这个版本控制工具它又分为可以从这个大体上又可以分为两类啊,第一类是这个集中式的版本控制工具,那这个第二类就是这个分布式的版本控制工具,那咱们是吧,这一张就简单来看一看,这两种版本控制工具有什么区别。那咱们先来看一下这个比较简单的,就这个集中式的版本控制工具,首先这个集中式版本工具,版本控制工具用的最多的就是那个比较古老的一个SVN啊,但是当然啊,目前这个企业里边用这个SVN的已经不是很多了,那我们看一下啊,这个集中式版本控制是怎么玩的,他怎么玩呀?首先啊,如果你是这个SVN这种集中化的版本控制系统,它都有一个比较单一的集中管理的服务器。那这样一来,我所有人都把我们这个代码维护到这个中央服务器里边,那这个协同工作的人们就可以通过你这个客户端,你本地的一个客户端连到你这台中央服务器,然后从那个中央服务器里边获取到最新的文件,那你就可以把这个文件拉到本地,然后做一次修改,然后呢再把你的代码提交到这个重装服务器。
01:17
那我们这是吧,也可以看一下这边这个图,下边这个图就简单明了的给大家介绍了,什么叫集中式版本控制,首先我在我公司里边,因为是团队开发,肯定有多个程序员,那我下边画的这个笔记本跟这两台电脑,这就是多个程序员,我就多个客户端嘛,那然后我的多个程序员想要开发同一套代码,那为了避免这个代码的混乱,我干嘛呀?哎,我给我我们共同搭建一套重量服务器。我们就是约定一下,大家把这个代码通通放到这台中央服务器上面。无论谁对这个代码进行修改,你都要去这个中央服务器里边修改,就保证我们这同一个团队,我们这三个人,他们修改的是同一套代码,这种思想就是集中式版本控制工具的一个核心思想。
02:14
就比如说哎,这个我假设这三个程序员是吧,是ABC3个程序员,那我小A先写了一个初始化版本,假设是V1,那我这个va把这个V1版本写好之后,它是不是提交到了中央服务器上啊,那这个B如果你想对这个V1做修改,你得等这个小A把它这个版本提交完以后,你把这个版本完整的拿到本地,然后基于这个V一再给他改一版,改成VR,那然后你在你本地改好之后呢,你要把你这个VR这个版本也提交到中央服务器上,那这样一来,在我这个中央服务器里边就有VR2个版本了。那这样一来,那我这个C是吧,有可能你会基于这个必改的这个V2再给他改版V3,注意你的V3也是提交到这个中央服务器上的,那这样一来就保证咱们这个代码它不会混乱啊,那这种做法它非常好,这个虽然好啊,但是啊它也有一定的坏处,什么坏处啊。
03:14
大家看这句话啊,事分两面,有好有坏,那咱们这个好处是什么呀?好处就是大家看的都是同一套代码,同一个项目,那每个人都可以看到你这个项目中的其他人正在做些什么工作,而我这个管理员也可以轻松的管控你每个开发者的权限,大家都知道在这个公司里边有这个架构师,有这个主城,就是这个主力程序员,也有一些实习生。那针对不同的人,我这个管理员是会开发这个,这个开放不同的权限的,架构师肯定对每个代码都有权限,每个代码,每个包,每个目录都有权限,而这个实习生你只能给他开放部分的增删改查的权限,为了避免这个实习生把那个代码改坏,所以说因为我们玩的都是同一套服务器,那我这个管理员也可以轻松的对着每个人做一个这个开发者的权限管控啊,但是啊,适分两面,有好有坏,那这个集中式斑块控制有一个致命的缺点,就是显而易见,缺点什么呀,就是这个中央服务器的单点故障问题。
04:22
大家也都发现了,我这每个人修改好代码,要立即把你的代码提交到中央服务器上,那这个时候如果我的中央服务器宕掉了呢?挂机了,或者是停电了,或者是是吧,你这个中央服务器你的磁盘坏掉了,那这样一来,那咱们这个代码不就没有了吗?所以说这种架构它有一个致命的缺点,就是中央服务器的单点故障,如果你这个中央服务器宕机一个小时,那么在这一小时之内,那你这个所有人都无法提交更新。那同学在这儿,他不在,他无法理解,那老师我可以把这个代码下载到本地进行修改,你虽然可以进行修改,但是你没办法提交你版本的历史记录,你把这个代码在本地改了一天,你虽然有很多这个比较好的想法,也做了对这个代码做了很多修改,但是你不能把这个历史记录提交到这个中央服务器里边,你不能做这个保本控制,你写代码又有什么意义呢?大家可以想一想啊,那因此啊。
05:26
这种集中式版本控制啊,慢慢慢的,慢慢的大家用的就越来越少了,逐渐大家开始用这个分布式版本控制工具,那我这个分布式版本控制工具就以这个gate为代表,咱们这个gate是一个做的比较好的这个分布式版本控制工具,那像这个gate它又可又是怎么玩的呀,大家看好了啊,从这个架构上,咱们这个分布式跟这个集中式它是不一样的。大家可以直接看这个图,哎,什么意思啊。大家明显看到我在我这个分布式这一块已经没有什么重要服务器了,我这每台客户端就是每台程序员的这个个人电脑,就是一个自己的代码库。
06:12
那我就可以在自己的这个电脑上做这个保守控制功率,就比如说我有个程序员叫A是吧,有程序号B,有个程序叫C,那我这三个人如果对这个代码有了修改,那我就可以在自己的笔记本上写一个V1 V2 V3,就是每个人在自己的本地库里边做这个版本的控制,这是。这个是分布式和集中式最大的区别。那大家看到这应该也会有疑惑,那你说你在自己这边搞,那怎么能保证这个代码的统一性啊,大家注意了,在这个图上他还少画了一个图,就是什么呀,就是那个远程库啊,咱们这个地这种分布式版本控制工具,它都是有一个组件叫做代码托管中心的,咱们俗称为远程库,就比如说我在这儿,我给你,我给你补一张图,那咱们这个就是咱们的。
07:05
诶,我这个这个就是咱们的远程库啊,我给你写一下啊远程。库,那就比如说哎,我这个小A做了一个V1这个版本,那我就可以把这个代码推送到远程库里边。而你这个小B这个程序员是吧,这个B这个程序员作为我A的同事,你是不是要帮助我写代码呀,你在写代码之前,你首先要用你的这个客户端,也就是你的个人电脑连接我们这个唯一的远程库,做这个代码的克隆,你要把我写的代码先克隆一份,也就是复制一份到你的本地库,然后基于你自己的本地库再做这个版本的控制,就比如说你感觉我这个V1这个写的不是很好,你基于我这个V的基础之上又补充这个VR,那你可以把你这个VR写好之后干嘛呀,还要把你的代码给我推送到远程库,保证咱们这个远程库里边儿的代码永远是最新的,那因此大家可以看到咱们这个GI。
08:08
这种分布式的版本控制工具,它就有一个很好的特性,它不再有那个单点故障,那同学说,那老师万一你这个远程库服务器挂掉怎么办呢?首先第一个问题,咱们这个远程库,就比如说GI ho啊,给这个马云啊,都是这个一些互联网公司提供的服务,人家这一块轻易不会挂。就算这个远程库挂掉了,你在本地也可以做自己的版本控制工具,只不过在这个远程服务器挂掉的那一那几个小时,你没有办法做这个代码的推送罢了,你在本地还是有一个版本控制的。那这么一讲,希望大家能够简单对这个分布式和这个集中式做一个初步的了解。那大家可以看到,那咱们这个分布式的版本控制工具,它解决了这个集中式版本控制的哪些缺陷呢?第一个就是咱们这个服务器断网的情况下,我也可以进行开发,为什么呀?因为我这个版本控制是在本地进行的,还有一个最大的好处就是这个每个客户端它保存的都是整个的完整项目,包括这个项目的修改的历史记录,那这样就更加安全,不再存在那个什么呀,那个代码服务器的单点故障问题,我们每个人手里边都有一套完整的包含历史记录的代码,这个是分布式最大的优点。
09:35
啊,那因此这种分布式版本控制工具在这个企业里边用的也是越来越多了,就比如说咱们这个gate,以这个gate为首,用的人是越来越多,越来越多啊。
我来说两句