00:00
同学们,今天给大家讲。版本控制,版本控制,诶什么叫版本,就是我们呢,在开发一个软件,软件的这个过程中。我们两周或者一个月会发一个新的应用到市场,发这个新的应用我们叫做。一个版本。版本有很多版本,比如说1.0 1.1 1.2 1.3。还有的命名是1.1.1.1 1.1.1.1 1.1.1.2 1.1 1.3,当然有就就有的公司他是专门做产品的,他会他会更新很多个版本,很多版本。但是有些呢,他公司更新的没那么多,他肯定是。一点零点三点四点是不是。它就可或者是三位数字或四位数字,或者三位数,就是1.1.1 1.1.2对吧,1.1.3,然后或到1.2.0 1.2.1不动零升对吧。
01:14
好,那这就是。控制一个版本,那么在这个过程中,我们会有这样的一个情况。这个什么情况呢,我们假如说有些版本。发出去了。发出去了,但是呢,我需要对这里面的功能进行修改。那这个时候我在修改之前,我就需要做个备份。那备份的话,可能大家想到的就是拷贝对吧,这是一种方式,但是如果用版本。管理工具去来做的话呢,就比较简单。好,那么从我们软件发布的过程中有不同的版本对吧,当然这个的话呢,它是一个阶段一个版本,这个是好直接用我们本地备份其实就可以了。
02:00
但是我们考虑到的就是这么一种情况,举个例子啊,大家看好。在我们生活中有这么一个情况,假如说这是我们第一天敲的代码。这是第一天敲代码,这是第二天敲代码,这是第三天敲的代码。好。那假如说我连续做了三天的工作,诶,我发现我第一天的代码。是我想要的,因为就是我们来做的时候发现,诶我第一天已经做好了,但是呢,老板让我加这个,加这个后来老板又说,诶,我记得你前年做的那个挺不错的,你用前年就可以了。是有这种情况啊,有肯定有,那这个时候你就要用第二点代码,那假如说因你现在的常识,依你现在没有结束,怎么这样的一个情况下,回到第一天的代码,你怎么回到。
03:04
啊。对,本地备份说的很对,就是说呢,可以在第一天工作结束的时候备份一个版本,工作结束的时候,第二天的时候恢复个版本,这样就可以解决问题。OK,是不是可以解决可以,但是如也就是你是一天的时候备份一次对不对,但假如说你这个功能是在第一天的早上就做完了。下午你就做了很多事情,但是他要回到第一天的早上。早上这部分。怎么办?对不对,那你需要什么?又如果按照这位同学所讲的,早上再备份一次对吧?好,然后第二天早上又备,下午备,第三天早上下午是不是就60了,对吧?OK,那假如说你早上的一个小时就搞定了一天。
04:05
那么也就是说意味着你可能要一个小时备份是,一个小时备份是,那你就建一个目录是吧?啊,今天是哪天的,今天哪个备份下。然后。但是你会想诶第一天哪天的代码这样的话,你到时候你去是不是导进来,然后来回的去去整了。这样的是非常乱的。对不对。它的有一个不好的就是粗力度。太大。就说你看啊,你你以天为备份,但是又感觉我想回到某个小时,某一个功能点是回不到啊,你不可能你不可能做一个功能做一个备份吧。是不是?也就是说你不可能做一个功能,然你把贷款拷贝一份,然后标识写什么标识写什么是吧,不可能做到这样,但是如果你用版本管理工具就可以做到这样,诶我每周工作我就提交一下,每周工具都提交下,也就是说以后用这个版本控制软件任可以到任何你提交的。
05:13
这个版本。就是说你每提交一次,它就有一个记录,这个记录并且是某一个版本,而且你在提交的时候会说明一些信息,那这个时候你就能看得到我我这是第一天早上这个十点钟做的老板就就在十点的时候,这个前天老板的时候在在在失联的时候就要这功能,那我就要回到这个时刻,回到这个。这个时点我提交的版本,我就用这个版本。管理软件可以回到你提交的。那个。这样的话就自然回来了。OK,就回去了。
06:01
好一会儿我们可以这样的演示,那假如说就按照这位同学,按照我们之前那种,呃,正常的备份,那假如说我们。这个老板感觉回推过去,诶感觉这个这个也挺好的,但是突然发现他觉得还是比三年的好。是有这种情况,那如果你备份了过后是吧,这个又回到第三天,然后三天里面的。下午的一点钟的。你坐的那那一次那个时刻。是不是如果按照正常备份的话,是回不去了。对吧,当然你每天也备份一次,但是你不可能每个小时备,对吧,那这时候只回到第三天,那你回到第三天,你是用于基于第三天,然后删除氮氧蛋白才回到。才回到第三天的一点钟,那个版本的,如果是按正常备份的话,对不对,那这个时候如果用版本工具的话,我就诶我回到。
07:01
第三天的某一个版本就很方便了,知道吧。就说用版本工具就可以。可以进攻,也可以后退。可以定位到任何一个版本,知道吧,只要你提交有记录了,他就可以定位到你提交这个。这个位置里面,所以这样的话呢,就特别好了。不光如此,还在工作中总会有这样的一些人,就是有个别啊,做一个程序员,他可能心胸比较狭窄,或者是他私欲。就是他有自己的私人的一种。他想什么呢?偷偷的干点坏事。这个时候如果用版本管理工具的话,你就你就干不了了,谁看了一看就知道,因为你要提交代码嘛,是不是是有有记录知道吧,所以的话呢,可以就版本工具呢,就可以解决问题,那么也就是说我们手工具备份出力度太大,所以这个时候呢,我们就可以用到我们的版本。
08:02
版本控制工具的啊好的同学们,版本控制是什么呢?就是如果也就是说它解决了我们手手工这个就备份带来一个问题,就是出率太大,也可能一天备份一次,或者半备一次,你不可能一个小时备份一次。而且一个小时说不定这个时候你还没法开发一个文人的功能,那没有文人的功能,那你备份有啥意义啊,对不对,所以小时备份肯定是也不对的,所以的话就是说,如果我们正常情况下按某一天备份的话,它这个处理度太大,而且可控性太差,我想回报某一个功能点基本上回不去,对吧?所以这个时候我们版本控制程序就会应运而生。那么版本控制工具啊,也可以叫做版本控制软件,那么它有很多种。
09:00
很多种,比如说我们之前在风行的时候呢,是用这个叫批复,它简称批复。啊点一下百度这,然后这里面呢,啊批复啊叫皮复,但是呢,它其实就我们内部叫批复,它叫PA for这么一个软件,看到没有这么一个软件,然后嘞,但这个软件呢,这个用的不是很多啊,啊你看用一款真正客端服务端特点的一个商业软件,然后呢,用它来这个管理我们的代码,当时我们就用这个门来做,相当于我们用了两年啊,那不管是什么样的版本控制程序。他。基本上用的。这个原理都差不多。啊,不多。啊,那也就是说都有提交啊,这个更新啊,有冲突啊,要去解决这些事情啊,那么呢,那么今天我们就讲市面上用的比较多的两款,一个是SVN。
10:05
是get。啊,特别是GIGI的话呢,我们的安卓的源代码就是由它去管理的。比如说我们之前在联想研究院,当时我在那里面做工程师的时候啊,咱们用的就是这个,但是当时我们在Linux开发啊,那么一般get环境呢,是由领导来配啊,领导配啊,所以这个的话呢,它配的还是比较复杂的,那这个的话,到时候我们就用get哈的服务器就来教你怎么用,然后去当代码,提交代码,然后这件事情SVN的话呢,大家在平时学习的时候。或者是个人开发一个项目的时候,或者与人合作的时候,都可以用这个啊,可以用这个工具,当然了,你去公司不一定就用这两个。但是你用通过这两个半空地,诶知道哦,原来我们国内干嘛可以通过软件让我们合作。更愉快,那我们活着更加的无坚辛对吧?好,那同学们,我们再来看一下了。
11:05
嗯,为什么要用呢?好,刚才我说了大概是这个啊,如果手工的话出太大可能性太差,所以这个时候呢,我们要用版本这个控制工具,那为什么用呢?其实还有一些场景给家看一下啊。好大看啊这些场景。你一。你的代码正常工作。然后你改了其中的几行代码,程序出了问题,你把代码改回来,程序呢,还是不能正常工作。这样大家遇到这种情况吧。你写代码一显的话,后来的话有问题啊,你你干脆这样从就就就就回到原点,然后回到他正确那个地方,结果的话还还有错。如果用版本控制,那么呢,这就很好了,比如说你你代码正常的那个地方,你是不是提交一个版本呢,然后你再改过后诶。
12:03
改过后没有成功,是不是这个时候你想回到原来那个版本的,刚才显示代码是可以不要了,那么就用版本工具也可就就可以回退到你之前正确那个版本。注意啊,因为你每做一个功能,你都会什么提交一次知道吧。所以一般来说我们UV的话,诶,我每做好了功能,感觉没啥问题了,我就提交一次,然后再接着做,诶做好了这功能,我想到诶我又提交一次,都是这么做的,但是你发现诶你在做一些新功能中发现有问题了,或者。他没有做出来或者有问题了,那我肯定不会提交的,知道吧,提交的时候都是正常了,没什么问题了。然后提交。明白吧,这个时候我就可以回到了某一个正确的位置里面去。明白吧,OK,所以的话呢,这种用版本工具就可以解决这种情况。你的程序还能正常运行。
13:00
昨天晚上呢,你修改了很多内容,做了很大的改进。目前,但是目前城区呢,不能正常运行。客户呢,今天要看程序员,就是看你看程序这个颜色代码。什么一个情况呢。呃,你们知道有一种公司叫外包吗?就是说明,比如说你们假如说你开个公司,你开公司,然后你们没有开发人员,这时候你会。对,找外包拿钱给我,我我帮你们开发,那么相当于你们俩就是我客户对吧,好就拿咱们就约定好啊,今天来看。哎,我是一个非常负责任成员,我想多做点功能,发现,诶我昨天晚上拼命的干,发现今天早上一起来的时候,想给你演示的时候,我的天呐,运行不起来了,那这个时候我如果运行不起来,对于你们来说,你给人感我给你们的感觉是我忽悠你们。这肯定不行吧,但是昨天我们版本本来是很不错了,对吧,但是我更加完善一点,其实在这个过程中,我完善的一些细节你们是看不出来的,就是我做多做少就看不到,只是我在代码上优化上可能改点,但是成像是没有问题,对不对?
14:13
这个时候突然运行不起来了,那对于我要给两位重量级的客户去演示出非常重要的一件事情了。那运营不起来了,那怎么办?那如果是昨天我做这工作完,讲的是不是提交一个版本呢,这个时候早上的话,如果出现这种情况没问题,用版本控制,我回推到昨天这个那个版本上。这个时候的话呢,运营起来就没啥问题了。知道吧,他会把你这个昨天那个版本所有东西记录一次,你就可以回退到昨天那个版本,这样的话,在这里紧急关头我们就会回馈到之前的版本,然后演示给客户,就顺利度过我们难关,挽回我们的经济损失,对不对,是不是啊?
15:01
第三。那么还有一种情况就是第一天客户要求一个进度条对话框来提示进度,对吧,一个一个进度条啊,对话框就是什么一个,呃,一个情况呢,好比如说我们要写这么一个对话框。它是以一个进度条的,对吧?好,第一天写进度条对话框,第一天客户觉得对话框不好看,要选直接选一个进度条,单独一个进度条,那第三天客户又觉得还是对话框好看,还是觉得这种好看,好那么要重现对话框,那如果你没有版本工具的话,你要做的是。就说你做了这个功能,然后你这个功能是不是你把之前对话框给删了就行,改为这种了结用户又要又要这种。那你是又得加上对话框啊,那是不是至少你要去整那个代码,可能这个代码可能感觉不难。但是你要回去,你是不是势必要刷一些,是要是要重写一下代码,那原来的工作是是不是白费了。
16:04
那如果用版本工具,我跟你说,你直接可以定位到这个第一个这个版本,这是第二个版本,就是你直接可以回到他这里来,就可以得到这样的效果了。爽不爽啊?所以用版本工具特别好啊,包括你个人开发,你个人一个人开发,没有人跟你合作开发,我都建议你用版本控制工具。哎,你每周功能提交,每周功能提交,然后的话呢,你以后想回调到某一个版本,那么完全是可以的。知道吧,好,你一个人开发也建议用啊。好,那么有了课,同学们场景四。有人在代码里面做手脚,就刚才我说的那种情况。那么找出。这个人来,程序员不承认是自己写代码,我们是可以看记录的,谁提交,因为每一个程序员,假如说我们这个项目。有ABC3个程序员,那这个时候如果有一个程序员,他心。
17:06
使坏了是吧,他可能要离职了,现在公司可能对他有时候他有怨言是吧,然后他要这个代码他搞坏,然后让这代码是这个这个这个这个这个这个弹出个骂人的对话框,骂用户是吧,让这个公司受损失是吧,那其实这个过程中我们是看到是谁提交的。加代码。是不是就可以找出这个人来,知道吗?所以就避免这种情况出现,所以的话呢,也可以用这个工具,可以做这样的事情。五。代码拥有者权限,开发人员可以修改,测试人员只可读,什么意思呢?就是说。嗯。我们用了这个版本控制工具,我可以指定。某些人。可以提交代码,某些人只可以下载代码。你提交代码是有可能把别人代码冲掉啊。冲突啊。
18:01
假如说一个测试人员。他肯定不会开发代码吧,当然有些测试员可以开发,但是他开发肯定没有程序员这么专业吧。那这个时候我们是不应该让他提交代码,这是我们只让他可以可以读的全球可以下载的代码,但不可以提交,知道吧,所以还可以做这种事情,比如说我们在风行工作的时候。就是什么呢?就是测试人员。他也用eclipse把代码荡起来,运行起来,然后呢,诶发现错误过后,他把日志啊,就他不是打日志嘛,要打日志要给个日志给我们,我们才知道哪里出错了嘛,是所以设置人员也没那么简单,就是说他至少把这个弹弹起来运行起来,然后呢去挨个去点。然后把错误把这。复制过来,然后传给我们,所以的话你想啊。同学们,你们一定要会看日志,测试人员都能做到这样知道吧,看日志哪个地方出错一点崩溃了就不动是吧?把日志复制下来,建一个文本,然后呢,上传到bug这个平台。
19:09
知道吧,发个其他平台。那这样的话呢,我们开发人员,诶,就是按照他那个步骤去重现bug,所以就你还要选这个bug的步骤,诶你是怎么复现这个bug的。就是你这bug在什么情况下产生的,我们测,我们我们开发者也按照你的步骤去看有没有这个bug,没有的话你还得重新给我复现出来。知道吧,所以的话,你不能就作为测试里面,你不能随便提交bug,你bug吧。偶尔一两个提交错了没问题,那你想多个的话,那我就觉得你这个人为了为了说自己,因为测试面是你发现bug越多,他功劳越大嘛。那如果你无无故的提交bug,那证明你这个。就是为了增加自己功劳,然后随便提8UG反而不好,对不对,是不是?
20:00
好。那么场景项目。源码这个版本的备份和记录。比如说你们做了一个。鞭炮软件。那么这个软件呢,第一版特别成功,诶一下子10万用户,诶弄了500万,这个版本是跨时代一个版本,而且是1.0版本,对不对,你要把这个代码备份起来,对吧,那么那么假如有一天是吧,这个这个。国家规定这个不准未成年人参与这个鞭炮,而且要立刻整改,这个时候你就可以开一个分支,在这个分支上尽快加个判断条件,立刻就可发布了,对不对?那新版本你可以继续开发嘛,所以他就可以做一个分支,知道吧,到时候我们会做一个小小的演示。然后的话呢,还可以这个分支这个功能做好过后,他可以合并到我们正在看的新版本。
21:03
对吧。比如说我们一键交友是吧,说之前的老版本里面是没有判断条件,但我们摇一摇交友,这是我们家的一个。大于16岁,小于这个30岁是吧,这个这部分年轻人啊,可以这个交友,然后的话呢,在发布出去的,没有这样的判断,那么发布出去我们就开个分支出来,然后单独到一个程序去做。那做好过是不是也可以,我们就先买那个合并呢。那么这样的功能的话,到时候我们也会给大家做个演示了。你改了代码的一部分程序可以正常工作,你同事改了代码的一部分程序也可以正常工作。就是说你和你同事要协同工作吧,现在都是,现在大家做项目是都是不是一个人做啊,注意安卓可能有一两个人做,即便如此是不是也要。也也也有可能也会有冲突啊,你改这个文件,我我然后我改成这样子了,你提交他又改成那样子,那到底用谁的是不是冲突了,对不对。
22:09
好。那么你把你们改动的合并在一起,程序正常运行了,这怎么办呢?要看一看。到底是哪些地方发生变化?因为是这样的同学们。如果大家技术都特别牛逼,然后呢,他改了什么,你改什么,你看可能就知得道,但是即便如此,某些地方多括号小一括号多一个字符,你这能插觉出来吗?很难察觉,但是用软件跟你说。微小的一点点,他都能发现,知道吧,是特别好啊,你就可以知道哪个地方,哪个地方有变化了,什么变化让代码不能正常工作了,你都能给你都能看到这个的变化。我们如何跟同事一同协同开发呢?在这个过程中会跟大家讲,就是解决冲突呗,你提交的代码不一样,我提交代码一样,那我们肯定有一个要要的一个功能嘛。这时候呢,我们再。
23:06
再再商量,诶,我们用这份代码是什么代码对不对。场景七,项目管理工作量统计,我记得之前就是我一个朋友,他们公司啊,就是。就看你什么呢,你这一个月来。你提交的代码多少次,然后呢就发多,基本上就按这个来算一部分业绩,为啥呢?你想啊,我们提交代码是肯定我们把一功能做完了,或者某一个bug改了才提交啊。这是程序员的最基本的。职责吧,你不可能说这功能有bug来提交吧,你明明都发现有bug,你不可能提交吧,那你提交的次数代表你改了一个功能,或者增加或者修改一个bug对不对,所以的话呢,这个时候我们的这个记业绩的这个部门就是人事部,他会把你。提交的那些日志啊,Bug啊,就全部打印,就是那些信息打印出来,然后看,诶你提了这么多bug,所以就多多发一些奖金给你。
24:05
知道吧,啊,当然这个不是所有的公司这样啊,反正我见过这样的公司啊,就是我一个朋友都遇到这就就就就就经历这么公司,因为我们可以从这个地方可以看得出你工作量多少,所以大家一般情况下在公在以后在公司的话就是拼命的干,然后把这些问题解决,提交一次,把这个问题解掉,提提交次要多提交啊,当然多提交可能觉得同学会觉得,哎,老师你是不是教我们这个怎么去抢这个真功了,不是当你提交版本多了会有好处,我想回到任何一个点。就很好方便,我是在这个角度知道吧,就说诶我可以回到某一个版本,回个版本,因为你每要就是产生一个新的版本,知道吧,他会上千个版本的,就会提高公司过后。知道吧,如果你每一秒钟提交是每一秒钟,是不是每一提交一次就是一个新的版本,这个时候你会见到某一个版本就会很方便,知道吧,他会这样子啊,所以的话呢啊,这些场景都需要用我们的版本控制。
25:08
你看大家想想版本控制,简单回顾一下可以做哪些啊?如果你代码正常改了一下不正常,那我可以回去吧,这个时候需要把裤子第二昨天能运行,今天昨天晚上。加班加点做了也是做了是吧,发现今天起来打电脑不能运行了,这时候可以回到我们之前的版本对不对,第三用户的话呢,他可能啊,你做好的功能他第一天不买。啊,这个他有点犹豫,不知道好不好,第二天你就做了一个效果,第三天做个效果啊,最后的话呢,他要你这个这个回到第一天的,这是用版本就很方便,产品是那么有有些人他良心不好是吧,他这个要离职了,这时候呢,公司可能他对公司的管理啊有些怨言,他在代码做手脚。这时候呢,我们可以看得到,知道吧,可以看得到,所以的话呢,他也不敢做,所他做了我会把溜出来是吧,如果他真的侵犯咱们公司的这个利益,咱们告他上法庭对不对,就完全有记录了啊。
26:13
第五代码用者可以设置谁可以读,谁可以提交,谁可以下载啊,谁可以下载谁可以提交,那这样的话呢,这个时候用版本就可以了,知道吧啊。第八啊项目我项目的话有发布一个重大版本跟我们有备份,对吧,要做一个约炮软件呢啊,我觉得这个版本挺好的,备份一下,第六嗯,然后呢,就是啊这刚才说的这种情况,第七记腋下。啊,记业绩。业绩对不对,那么就是看他提交多少次啊,当然了,这个是有些公司这么做的,对吧?好,那同学们,这是我们为什么要用我们的版本控制软件。大家明白了吧,版本控制软件不光是多个人协同开发用得着,你个人开发也可以用,但是呢,个人开发不用也可以,因为你代码你自己开发你比较清楚,但是有一个问题就是你。
27:12
时间一长了,是不是遗忘了?但是如果你每一个版本提交一下,你就知道我这个版本提交怎么带嘛,所以你看这个记录你就知道哦,这是一个技术点,这这也是个技术点。所以后面我们上课的时候呢,比如说我们在讲手机语音的时候,我会每讲一节课,我就提交一次,提交一次过后呢,各位同学就可以下载代码下来。每节课我一提交,你可下载下来你就看代码。知道吧,就相当于就是你们可以当下来可以看代嘛,这样的话是不是很方便了,不用上一整天代码才拥有是不是,所以百分工具还可以用到课堂是。对吧,没网没关系啊,我你看你不是可以QQ可以联系吗?他可以,我到时候可以把我的IP你都可以到我这里来。
28:00
知道吧,就可以通我电脑去当嘛,讲我电脑我开了他们开的,其实你们也可以访问我的他们开的服务器啊,知道吧,一样的道理嘛,好,那有个后常用的版本工具有哪些呢?啊用SVN和G啊这两个,那么呢,我们主要讲是SVN,因为GI的话呢,通常是以后大家如果有机会去做那种。手机,比如说你要去开发这个小米手机,你是因为大家可能底层这个这个这个不会,但是总会是吧,这时候呢,他管理我们的代码都是用get。啊好,那么我们会用会用到我们的这个SVNSVN呢?好,SVN是什么呢?其实它的全称叫莎白。是吧,那么大家可以这个搜一下,好,那这个地方里面的话呢,这个对吧,就就是了好。
29:00
啊,这个。你看他知道我是联通对吧,弹出来这这种你知道同学们,因为我现在是用手机上网,看到没有,他会弹出这个来,这种叫做。呃,叫做叫什么广告就拦截斯广告就是那种。就是叫啥了这个技术啊,就是只要你用到它,它就弹出这个来,知道吧,啊不利他,其实这个广告就是联通的,知道吧,你看联通多多可恶对不对,还有种广告就比如说啊。顺便聊一下啊,这里插在这就是说。假如说啊。嗯。假如说这个,比如这个火狐浏览器,你是用他们家的吧,你见任何页面是不是他都可以弹出广告啊。这个意思,同样你用联通的。这个是不是靠他去联合请求啊。然后他就诶检查你是不是第一次打开浏览器什么的,然后呢,这样的话就弹出一个东西来,打个广告给你,就只要你你用他这个网络是他都可以打广告。
30:06
就像现在你去坐飞机。飞机的话呢,你是接飞机的WiFi啊,然后这样的话,他也可以给你打广告。是不是啊,自动就到你手机上打个广告,还有以后大家注意在外面千万不要随便用别人的WiFi。因为你WIFI1连上,假如你支付宝上不断的,他可能不断的去叫你些密码,他就捕获你的密码,诶,就知道你的密码了,比如说春晚的时候,有些人不是练一下那个央视的那个WiFi,然后他就可以盗取你的,呃,微信里面的照片是不是你密码也知道知道吧,所以不要用陌生人的WiFi啊。不要用陌生的WiFi,好,那同学们有了过后,我们这个时候就要了解了SVN啊,它是这个S的一个简称,是开源代码的这个版本控制系统。好,相对于这个啊,这是早期的,它采用了分支管理系统,它的设计目标就是取代CVS,早期是用这个。
31:09
那互联网上很多版本呢,都已从我们的CVS迁到SVC,就是我们的SVM,说的简单点。SVN用于多个人共同开发一个项目,共同这个共用资源的目的。是吧,这样的话可以协同开发啊。那么这就是我们的SVN。那VF呢,它采用的是集中版本控制,什么一个意思呢?就是说这是一个服务器,我们在这里面呢,存我们的代码。存代码,然后这是一个开发者,这是个开发者,这是一个开发者,你呢就可以这里面去提交代码,也可以当代码,他可以提交代码。他也可以什么当代码,他可以什么提交代码也可以。
32:02
代码提交代码,代码就是统一用一个什么服务器去滚代码。明白吧,这样的话呢,我们就可以,诶,只要某一个哥们提交了,我呢就更新下来,然后再把自己提交上去,这样的话呢,就可以做一个协同开发。好,这是SVN啊,这是SVN的这么一个。啊,极致好,那有后同学们,那么它是集中的版本控制,用来替代CVS。然后SVN的操作原理是什么呢?好给大家看一下这个图。SVN的话,一会我一会的话呢,我们用得到。好,大家看好,同学们,在我们这个地方里面,就是我们刚才给大家所说的,这是一个服务器。在服务器里面,服务器就是一个硬件。是吧?然后呢,我们在这个地方里面搭建一个软件,软件呢,这个时候就建立一个仓库,注意这个软件叫什么SVN吧,它这个叫做仓库。
33:08
这个是叫SVNSVN里面有个仓库。这个是我们硬件的服务器,这没问题吧。假如说我进个仓库用来装什么?专原装代码对吧,那么假如说我们的这个用户。这个用户啊,或者说这个这个这个是用户啊,再给我发一个圆的是用户,这个用户一这哥们呢,他第一次去当代码。那么用的命令叫checkout检出,看到没有?叫把整个。项目源码下载,本地叫checkout checkout checkout。他的意思就是什么。
34:01
检出。这个这个词汇之前学过吗?检出。就剪才有新的,便把它荡下来,就剪出。这意思?好,那检出过后,在这个过程中,那么如果这个三程序员他呢,提交了一个代码。提交代码过后,那么我们的一程序员这时候呢,他要把这个三程序员,这三程序员提交最新的把它当下来,这时候又用到了一个命令叫什么啊。Update update这个单词大家知道吧,更新对不对,那么就是将本地的。源代码更新至服务器上的新版本就是服务器最新的。那么假如在这个这哥们没有开发代码的情况下,假如他是个测试人员,对不对,这时候是只需要更新的。
35:02
这时,那么这个是开发者,他就提交。好,那么有了之后,那么假如有一天。我们在这个地方里面,因为讲他是一个测试人员。这个测试人员同学们,他是不需要提交代码的。不需要。不需要填的代码。啊,但是这个同学们这是一个。啊,我们的一个code code是什么。代码就是我们的一个开发者啊,当然我这个我就用它来替代开发者,那开发者是不是也他这个哥们也提交一个代码啊。好,那么呢,这个哥们如果也要参加开发这个项目。他第一步,他是也需需要这个out。把整个的当下来啊,然后接下来当下过后,如果是第一次,当时他他肯定是最新的吧。
36:00
好,那么假如这个时候他开提交一个版本,这个时候这哥们再需要更新是阿,然后如果这个扣这个哥们他也改了一个版本,他添加一个交友功能。天加工的,这时候他就提交到哪去啊。服务器。是不是调服务器,然后他其他服务器的话呢,好这个哥们,他接着这个交友这个功能里面接接着做。这个时候他需要的是什么?先是更新到本地。对不对,跟到本地,那跟到本地过后,这个时候跟到本地过后,诶好,他做又做了一个功能。它做一个功能,这个功能呢,是对交友的一个设定,就必须得大于我们的16岁,小于30岁,这样的一个功能的一个设置好,他做完之后就提交。提交过后,这个时候他要想接着这个工作再继续做,他先把更新下来再继续做,知道吧。
37:07
好,那么现在大家有没有发现问题,这总是等他做完,他在做啊,这是不是浪费精力啊?其实是可以同时做的,他可以做,他可以做。他就说那同住过后就会有一个问题,他把这个交友功能提交过后,那么他更新的时候,他也他做的是。他这时候的时候,他在这个哥们做的时候,交工是还没有啊,啊,就对那个条件的设置还没有,那这个时候同学们。这时候就会产生冲突。冲突空这个时候呢,需要解决就可以了,知道吧,到时候我们也会讲。好,那也就是说同学们在我们的过程中啊,回顾一下服务器这里面有一个这样的一个啊东西啊,就service,到时候我们会搭建服务器,注意这是服务器,服务器呢,我们建一个仓库,然后呢。就提交代码,提交代码的话,假如说这是一个啊,程序员他肯第一次提交了,然后这些人呢,他他可以第一次就当下来调的,然后我们再把这个问提交过后,其他们又要想去下,就不是out了,叫什么update。
38:12
然后假如说这个程序员,他把他给。把最新的版本更新过后,他也想做点东西,他提交,那提交之前先要update先更新。更新后再把这新版本,再把我们要做的功能提交,再增加到新版本,然后再提交。明白吧?好就这么一个过程,好其实特简单,讲讲讲简单一点啊,简单点就是这有个服务器啊,张三李四这个是张三啊,他先提交去上去,然后呢啊他做功能,李四也要做功能哦,然后呢,都可以通过服务器呢去记录这些东西,然后呢,中间有冲突解决一下就可以了,那这测试这边呢啊,他可以直接当代码啊,然后呢,他不可以提交,提交也提交不上啊就这些设置通过通过谁呢?通过一个叫SVN啊SV。
39:04
嗯,这么一个软件啊SVN。这么个软件,然后SVN他有一个什么服务端,有一个什么客户端啊,在客户端就是个每一个程序员里面都装一个什么客户端,明白了吧,S有客户有服务端,其中客户端就是每个程序员装一个服务端只有一个。明白吧,服务端有一个就可以了,你可以在自己电脑装服务端,也装客户端,那假如有同学把服务端装不上,那你可以共用啊,可能会有有这个软件有有有些问题,就是有货别一个班总会有一两个同学死活装不上。那这个时候你就可以考虑用旁边的同学的这个电,用他的SV就可以了,知道吧,用他电脑,就是你可以照样提交到他电脑上,然后照样可以切out,知道吧,好,那同学们现在明白这个SV了吧。
40:01
明白了是吧,好。那有过后G是什么呢?G是分布式版本,这个是之间是集中。你看集中就是。这服务端这个是程序员他们呢,都是提交到这里去,然后从也是从叠档是集中啊好,然后这个过注意了,这个G的话就是它就是一个分布式的一个版本,什么意思呢。大家看好,这个是一个仓库。代码仓库,然后呢,这是一个程序员,这是一个程序员。这是一个程序员,这是程序员,这是一个程序员,这是一个程序员,这程序员注意这个通常这个程序员是比较是一个菜鸟普通的,但这个代码是有可能有问题啊,他不能直接往这里提交。他提交先提交到账。
41:02
就这走。然后呢,这个也是一个参鸟程序员调到这,那这个呢调到这,这个调到这,那这个程序员功能就是技术还不错,那么呢,它属于技术中等偏上,但是有一个核心的很牛逼的同揽全局的所有的人代码。这个这个是技术很不错的,这个人更有项目总负责人。由他去取消。就说这样的话,就有个问题,就是在开源项目上就采用这种方式。比如说我们在联想的时候,我做了功能,我提交代码。我不能直接体验到那个库库里面。就是我们的一个上层,一个领导。来审批一个代码行不行?知道吧,那也就是说这个代码好过后,他才磨叽磨叽进去,注意磨叽就是活币啊磨叽。啊,你好像没用到墨的。
42:02
啊,就合并到那个仓库里面去知道吧。你看像这样的有个好处,就把把关这个代码的质量啊,是不是,所以这个get铁同学们get铁的话,比S温在在这个啊工作就是说越来越比SV利用的更多,因为因为现在程序员挺多的,对吧,但怎么让这程序员呢,相互的这个监督起来就有好处,就是说谁技术好,那么谁就做这种领导。然后这个领导再提交这个公司里面的技术很牛的那个是吧,然后如果他提交过程中,他可以看到他代码,如果他代码不行,是不是他可以骂他呀,你看他回去改不行对吧,那这个菜鸟的话,不行的话,他就你看你代码写好点嘛,帅哥是吧,是就可以要他是不是吧。这就是get对吧,啊叫D。提成。好,那同学们在地方里面的话呢,就是这么一个情况,然后对开源应用开发特别适合,就是你在网上谁都可以参与进来。
43:06
谁都可以参与。但是。不是谁都可以直接写到库里面去,我就看你技术怎么样,看你感觉你代码写的不错,我把你的权限往上提,然后呢,让你可以。可以,这个成为核心人员也可以。这个这个可以直接更跟更核心的人,直接向他那里提交。然后更核心的人才可以直接填到库里面去,就保那个开源项目很优秀嘛,你发现开源项目书特别好啊,代码写的特别好啊,我跟你说都是有大牛把关的。当然是有名的开源项目啊,假如说你自己做一个开源的,那那那怎么说,那就可能就没有人把关,你想怎么关就怎么关,是吧,那就不算嘛,是吧,开源项目我们指的是很很很好的那种。好,那么G和版本有什么区别呢?好,你看刚才说了,这开发里面这共享一个库吧,每个开发者只有。
44:04
每个开发者只有应用代码的一个版本。啥意思呢?就是你当前只有一个版本,你当一个有一个版本。然后在离线下,开发者无法进行版本的开发。离线什么离线了,有的同学非常,哎,我是不是要上网啊,啊不一定就是你要先要理解。连上服务器,就是能够连上服务器就可以,就比如说我的电脑可以做服务端,同学们都可以提交。到我这里来。那虽然我们没有与外网。但是对于我们也是保持联系了,知道吧,所以的话呢,这种是啊,这种不是离线状态,就是假如说我这个我这个服务器我进到我电脑上。我把线拔了,是离线吗?你提交不上来了,这是离线,所以在离线状态,开发者无法进行版本的一个开发啊,这是它的一个缺点。那么既然他有缺点,那么地铁他就一定优点了,每个开发者都有整个代码库的一个所有版本。
45:04
什么版本,就是说。版本的管理是在我们本地了。你做的不错,够你就可以什么。向服务器那个整个去提交,那么它的模式变这样。你看刚才我们是不是刚才画了这个图啊。共享库。核心有核心人员去提交这个开发人员,开发人员这个是比较牛的开发人员,他向他提交。但是每个人都有整个代码,看到没有。都可以荡下来。它可以直接当。他这个当这开发人员,这个开发人员是直接可以从这档啊,这个开发人员是给直接从这个档啊,这开发是是可当啊,但你提交就不允许直接提交了,你要提交提交给谁啊。这个你要提交,提交给谁呢。提交给他,你要提交提交给谁,提交给他,你要提交给谁啊,提交你要提交给谁啊,提交他再由这个人审核代码提交,当然他审核他们俩的。
46:03
是不是当时我们在联想的话,我就。我们就采用这种方式,我们这个多,当时我在多媒体组,我们多媒体的有一个专门管技术的。但就是公,因为我们那个组有20号人,20号人的话呢,就是你看包含相机啊,图片浏览器啊,还有浏那个浏览器,还有啊视频播放器,音乐播放器,还有相机等等这些,那么都是一个组,这个组的话有S全是开发人员,然后其中有一个就是。其中有一个是做管理的,管理的下面有一个技术特别牛的。然后呢,他负责审核代码。就相当于是属于这个人。然后我上面还有个领导,但是当时这个这一块我们就省略了,就直接给这个核心人员知道吧,这一块你是可以省略的,就我上面还有领导,领导上面还有领导,就说我是相当于是底层员工嘛,当时是码农嘛,因为因为刚工作,那时候刚工作一年多点,就在联想。
47:02
然后的话呢,就是这么一个情况,我对这个非常熟。我就对这这个节目非常熟,我当时就,诶有人审核了才能提交。知道吧,现在一回想来讲这个课,发现哇,谁这不是当年的我吗?是不是,你看这个图,当年我就在这啊,分的差啊好。那同学们有了过后呢,它有个交,那就是这么一回事,就是你看和这个差不多对吧,但是注意了我们。要想提交代码,一会用到命令,注意我们一如果一会用D拨后,大家注意我们提交代码就用push。就是我们这个开发里面提交那个,呃这个服,呃这个服务器,这叫push。然后杠下来叫什么?那么第一次当下来叫什么克隆?好,大家有没有想到,哎,克隆羊,克隆牛,我跟你说克隆的意思是什么,就跟复制差不多对吧,但是又又不止于克隆是吧,就就就是克隆的意思就是你长什么样。
48:07
我想怎么样?叫克隆对不对,所以的话呢,我们克隆牛最初就来自一个单词,它翻译过来的嘛。从这个英文发音过来嘛,说叫克隆,你看他发他发现叫克隆,克隆克隆。所以的话呢,克隆这个词最先是来源于国外,中国把它翻译出来叫克隆。他拼音叫是吧,是不是明白吧,所以中国把它翻译成叫克隆,其实它发音叫是吧克好,那我把它给当下来。然后注意我们提交代码是什么意思啊,提交注意你提交的时候是在提交本地,并没有同到服务器明白吧,所以他可以在本地什么管理代码。在本地国内代码就会知道你的各个版本,然后你就把这个版本呢整体提交上去,可以这样。OK,听明白了吧,它们之间区别,当然讲完这过后呢,到时候我们要一一的去用它好了,同学们,这是我们这个对这个版本工具的一个啊版这个理解版本工具啊,就这些好把它给。
我来说两句