版本控制在友军那里都是放在整个培训的最后阶段才开始讲的,但我们打算放到SE阶段。与其匆匆在项目实战阶段弄个半生不熟,然后进入实际工作中接受他人对你的怀疑,不如……早死早超生~~~。
可是,我们毕竟现在才刚学了Java一个月,代码都写的不溜呢,甚至都不知道目前掌握的知识能做点撒实际有用的工作,怎么就来个版本控制?版本控制是撒?
抄一段百科的版本控制解释:版本控制是指对软件开发过程中各种程序代码、配置文件及说明文档等文件变更的管理,是软件配置管理的核心思想之一。
看到没,版本控制是一种思想,但是程序猿不跟你讲思想,跟你讲实实在在的东西,所以,实现这个思想的一定是个实实在在的工具。在最课程的整个学习过程中,商业项目实战阶段代码的版本控制工具,我们使用SVN。而,个人工具代码集,我们要求使用git,放到github中。
为什么要现在就开始体验版本控制呢?因为我曾经询问过很多学员,大家对于毕业后软件公司的真实开发流程很茫然。而最课程想要带你做的,就是提前适应真实的开发,让学员从尽可能早的时刻,就参与到需求管理、版本控制、同行review、解决代码冲突、移行、测试、发布的整个过程。
我们在培训班学习,重点绝不应该仅仅是编码知识(那还不如去自学看视频),而应该是如何使用学到的知识应用到真实的开发中。
来提前感知下,整个开发流程大概是个什么样子的吧
软件开发中的精简并行过程(SPP)
以上整个SPP过程包括:6大阶段、12个过程域、28个规程、31个文档模板。你有没有准备好到我们最课程来感知一下呢?
不管怎么样,让我们先首先学习这整个过程中最重要也是最基础的一环:版本控制吧。
1. 什么是版本控制
上文已经简单介绍过了,现在我们用白话来再介绍一下它有什么用:
首先,能将代码提交到服务器,这样本机即使被炸掉了,或者你突然离职消失了,只要服务器没被老板娘砸掉(什么,有这种事情?是的,回头给你们讲讲我一个客户的故事),公司的代码就都还在;
其次,能将代码回退到以前的任何一次提交上。这是什么意思呢?比如,你一个月前写了一个功能:让APP的背景随手机壳颜色的变化而变化,但是一个礼拜前你按照产品经理的要求把功能修改为:让APP的背景随我心情的变化而变化。但是,怎么又一个但是?但是就是这么任性,但是这在实际的开发中就是这么容易出现。但是现在产品经理跑来告诉你:我不想要你上周刚实现的功能了,你把功能回退到一个月前的那个背景随手机壳颜色变化而变化的功能吧。此刻,你心中的心情应该是这样的:
要知道,代码在本机可是已经覆盖了,这个时候,版本控制管理工具就可以发挥作用了,你可以将代码回退到历史上任何一个时刻。
这里来个小插曲,要想不被产品经理欺负,可以尝试准备如下工具:
最后,版本控制的另一个重要功能是,任何稍微大型点的软件,都不可能是一个人完成的,所以,我们需要一个工具将团队成员的代码合并到一起,看上去像是一个人写的一样。所以,代码的提交和合并也是我们真实开发的日常。
好了,暂时对于初学者来说,就讲到这吧。目前够用了。
2. SVN介绍
SVN就是那个实现版本控制思想的工具。废话不多说,直接给出软件的下载地址:https://www.visualsvn.com/
3. Svn服务器端安装
下载回来大概长这样
双击安装
如上选择,next
选择标准安装
注意哦,默认是不需要https的,如果有同学手贱想尝试https,也是可以的。但我墙裂建议你不选择https,因为……在局域网中,没撒特别的意义。而且,在整个学习的过程中,还要求其他同学连接到你的源码服务器上,选择了https的话,有些同学的电脑可能会连不上你的电脑。
安装完毕在系统服务里有svn的服务,如下:
服务器端在公司里,是真的安装在一台服务器上的。在我们的学习过程中,那就跟客户端一样安装在你自己的学习机上就行了。
4. Svn客户端安装
客户端大致长如下这样
我们一路next下去就行,没什么特别需要注意的地方。
5. 配置svn server
打开服务器管理界面,添加用户,按提示来,添加上你自己的用户名,比如:baobao
按照如下步骤创建资源库。所谓资源库,可以理解为你的代码要存放的仓库。
仓库有了,就要给这个仓库分配权限,因为,你可不想让任何人都接触到代码。来吧,给你刚创建的用户添加代码的读写权限吧:
完毕。
6. 访问svn
访问svn其实就跟访问网站一样,也是有一个地址的,但是地址怎么得到呢?看下图
然后,在本地任意文件夹中点右键
粘贴刚才的地址,回车:
你就可以看到下面的界面了
这里默认已经创建了3个目录,每个目录是什么时候,我们会在项目管理的时候讲到,这里,我们只需要记住,我们所有的代码都放到trunk中就行了。
7. Elicpse插件安装
那接下来要怎么把代码放到服务器上呢?一种方式是直接拖动文件到上面的窗口中去,但是我们平时开发是在IDE中的(Ps:目前是eclipse,未来是idea)。那能不能直接从eclipse中提交代码到服务器呢?
当然是可以的。
但是,要完成这个功能,我们就需要给eclipse装插件。这个插件叫subversive。下载地址在:
http://www.eclipse.org/subversive/
http://www.eclipse.org/subversive/previous-releases.php
那怎么安装呢?首先是解压,然后把下面两个目录复制到eclipse对应的目录中去就可以了。
然后,记得重启elicpse。
8. SUBVERSIVE CONNECTOR 安装
但是,事情并不像我们想象的那么简单。要说怎么java程序员这么苦逼呢。当我们以为可以使用svn的时候,我们还需要一个connector,下载地址在:
由于我们的subversive是3.0,故下载这个
同样,安装也是执行目录copy
重启eclipse,然后检查下:
如果像上图一样,该有的都有了,那么我们的安装就成功了。
9. 代码提交
首先,像下图那样进行选择
然后,在该页面new一个仓储,输入svn地址,得到:
在trunk下创建一个文件夹,
Ps1,这个文件夹最好和咱们在eclipse中创建的项目名一致);
Ps2,我示例中的项目叫:parent;
回到项目视图,在项目上share project
接着
注意路径选择,路径的命名首先要定位到trunk下,然后再加上项目的名
接下来,是提交代码。在项目名上面,右键->team->commit,出现如下界面
首先,让我们写上注释。注意,注释写的越详细越好,把你这次提交完成了什么功能都写上,免得我们将来查看历史的时候,不知道本次提交是干什么用的。
其次,我们是提交全部文件吗?显然也不是,除了代码文件外,一些配置文件或者附属文件我们不应该提交上来。
但是,每次去提交的时候,选择提交的文件太麻烦了,那有没有一种一次性批量忽略的办法呢?当然是有的,如下图:
要忽略这几个后缀:.settings,.project,.classpath
提交后,在eclipse的项目上,会有受控标识,类似如下:
10. 查看历史
在项目上右键->team->show history,看看会出现什么?
好了,以上是我们为了完成第一次大作业所要储备的版本控制的知识。更多的功能,等我们慢慢后期挖掘中。
华丽分割线
===========================================================
1:最课程JavaEE+互联网分布式新技术开班进行中,来http://www.zuikc.com来报名吧;
2:更多技术文章和开班信息请加入,QQ群: