版本控制在友军那里都是放在整个培训的最后阶段才开始讲的,但我们打算放到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,下载地址在:

https://polarion.plm.automation.siemens.com/products/svn/subversive?utm_source=eclipse.org&utm_medium=link&utm_campaign=subversive

由于我们的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群:

3:本文所涉及要下载的软件可以进群向老师索取;

4:SVN的教学视频可以进群向老师索取;

最课程阶段大作业之01:使用SVN实现版本控制的更多相关文章

  1. 最课程阶段大作业06:U度节能平台控制系统

    除了互联网项目,当今社会还有一个概念非常流行,那就是:物联网.什么是物联网?物联网是通过传感设备,按约定的协议,把任意物品与互联网相连接,进行信息交换和通信,以实现智能化识别.定位.跟踪.监控和管理的 ...

  2. DIP大作业---图像分割

    数字图像处理课程的大作业,要求如下: 图像分割就是把图像分成若干个特定的.具有独特性质的区域并提出感兴趣目标的技术和过程.它是由图像处理到图像分析的关键步骤.现有的图像分割方法主要分以下几类:基于阈值 ...

  3. 软件工程大作业(学生会管理系统)Web端个人总结报告

    软件工程大作业(学生会管理系统)Web端个人总结报告 一.小组信息 1.所在小组:第二组 2.小组选题:学生会管理系统 3.项目源代码链接: Web端源代码:code 小程序端源代码:code APP ...

  4. 与左侧的 圆括号“(”(位于“e:\大二上课程课件、作业和答案\数据结构\chapter4\sqstack\sqstack\mysqstack.h(23)”)匹配之前遇到文件结束

    错误原因是“某对圆括号只打了左括号而没有右括号”,debug方法是:直接根据报错提示:“与左侧的 圆括号“(”(位于“e:\大二上课程课件.作业和答案\数据结构\chapter4\sqstack\sq ...

  5. 模式识别课程大作业 Shopee 商品图像检索

    大作业项目简介 在如今的信息科技时代, 带有拍照功能的移动设备如手机.相机等得到了极大的普及和流行, 各种各样的图片和视频可以随时随地获得, 并借助互联网快速传播, 这种趋势使得网络上的数字图片和视频 ...

  6. 2016福州大学软件工程Beta阶段团队作业成绩汇总

    1.评分规则 本次Beta阶段团队作业评分方法如下: 团队得分=[[7次scrum过程评分+(小组互评得分+教师评分)/2]/2],其中过程.小组.教师各30分 说明:由于没有规定提交团队贡献比,因此 ...

  7. 哈工大CSAPP大作业

    第1章 概述 1.1 Hello简介 hello的源码hello.c文件,要生成可执行文件,首先要进行预处理,其次要进行编译生成汇编代码,接着进行汇编处理生成目标文件,目标文件通过链接器形成一个可执行 ...

  8. 哈工大 计算机系统 大作业 程序人生-Hello’s P2P

    计算机系统 大作业 题 目 程序人生-Hello's P2P 专 业 计算机 学 号 班 级 学 生 指 导 教 师 计算机科学与技术学院 2021年6月 摘 要 本文主要通过分析hello这个程序的 ...

  9. 期末Java Web大作业----简易的学生管理系统

    学生信息管理系统(大作业) 2018-12-21:此文章已在我的网站更新,添加视图介绍等信息,源码请移步下载https://www.jeson.xin/javaweb-sims.html PS:首先不 ...

随机推荐

  1. JS排序算法之快速排序

    const Arr = [85, 24, 63, 45, 17, 31, 96, 50]; function quickSort(arr) { 80 if (arr.length <= 1) { ...

  2. bzoj1208splay模板题

    想试下新找的板子,没想到交上去CE了..懒得调..以后有机会就改 /* 用type标记当前树上的是宠物还是人 每次求前驱后缀,删掉最近的那个点 */ #include<iostream> ...

  3. hdu3308

    区间合并比较模板的题,就是求一个区间的LCIS 线段树维护左最大LCIS,右最大LCIS,区间LCIS 看代码就行 #include<iostream> #include<cstri ...

  4. java select 多字段处理查询结果辅助类

    接口 ResultSetMetaData 可用于获取关于 ResultSet 对象中列的类型和属性信息的对象 使用示例: ResultSet rs = stmt.executeQuery(" ...

  5. Thread + 匿名内部类

    package chapter01; public class MyThread01 extends Thread{ @Override public void run() { //让当前线程执行的代 ...

  6. java -d

    DB_SERVER_URL="-Ddatasource.driver=oracle.jdbc.OracleDriver -Ddatasource.url=jdbc:oracle:thin:@ ...

  7. sum of powers

    题意: 考虑所有的可重集{a1,a2,a3....ak} 满足a1+a2+....+ak=n,求所有a1^m+a2^m+a3^m的和 n,m,k<=5000 题解: part1: 考虑f[i][ ...

  8. linux命令简写解释

    命令缩写: ls:list(列出目录内容) cd:Change Directory(改变目录) su:switch user 切换用户rpm:redhat package manager 红帽子打包管 ...

  9. springmvc返回中文乱码问题

    关于springmvc的返回中文乱码的问题,网上可谓是清一色的一样,无外乎就两种,要么在局部类或这方法上解决,类似如下的代码: @GetMapping(value="/error/query ...

  10. Volley网络通信框架

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools=&q ...