日常啰嗦

还好在第一篇文章里就列好了接下来的主线及要写的知识点,不然都不知道要写什么东西了,开篇里已经列了基础篇要讲svn和git的知识点,所以这一篇就写一下版本控制。
项目实际效果展示在这里,账密:admin 123456
下载地址,点这里
github地址,在这里

版本控制的定义

维基百科的解释:版本控制(Revision control)是维护工程蓝图的标准作法,能追踪工程蓝图从诞生一直到定案的过程。此外,版本控制也是一种软体工程技巧,借此能在软体开发的过程中,确保由不同人所编辑的同一程式档案都得到同步。
由这个概念中我们得出两个版本控制的关键点,一个是记录,一个是同步。
 

为什么要用版本控制?

    没有版本控制系统的话,代码可能被别人或自己不小心覆盖或遗失、也不知道是谁因为什么原因改了这段代码、也没办法可以复原回前几天的修改。有了版本控制系统,开发人员只要将每次开发的变更都纪录(Commit)起来,并且透过版本控制系统中进行更新。
    每个人都在修改、添加、删除着自己本地硬盘上的代码,当他们把这些代码汇总起来时,麻烦出现了,总不能每次都去copy代码然后把文件传给其他人。还有,到底谁改了哪些文件,具体是文件里的哪部分被改动过?一个人的修改会不会把另外一个人的修改给覆盖掉?上线前,代码汇总的工作变得非常危险,需要非常小心,一旦出错后果不堪设想,而且这种情况下,大家的工作不仅仅是开发,无形中,给所有人增加了很多工作量,效率将会变低,如果某个地方出错,可能代码汇总的工作又要重来一遍。这只是两三人的小团队,如果是几十人几百人的大团队呢?那将会是噩梦,当然,几百人的团队也不可能出现这种情况,我们只是做一个假设。
    如果这个团队采用了版本控制。我们可以浏览所有开发的历史纪录,而且作任何修改都不再害怕,因为你可以轻易的复原回之前正常的版本,版本控制工具也会在每次提交的时候主动合并所有人的修改并解决可能发生的冲突,每个人手里一直都是汇总好的代码。当开发进行到一定阶段,可以直接拿去测试,不需要再有额外的工作来浪费时间。另外,你还可以知道,程序的某个Bug是怎么出现的,是被哪位同事,在哪个时间点造成的,最重要的一点是,不怎么需要刻意去去可以问一下开发人员进行到哪一步,通过版本控制,掌握团队的开发进度,对整个开发流程有很大的帮助。版本控制工具中也有很多其他功能,我们也可以透过分支和标签的功能来进行软件发行的不同版本,例如稳定版、维护版和开发中版。
 

你不是一个人

    上一段落讲了一下为什么要用版本控制,只是讲一下版控的好处及积极影响,其实最重要的一点就是,我们开发人员要有一个意识,就是“你不是一个人”,你是团队中的一员,以往写的文章中也提过很多次,时间也是重要的资源,需要合理协调和分配,我们要保证开发质量和开发效率,在团队中普及一些提升工作效率的工具是非常重要的。
 

git和svn

    版本控制的工具还是很多的,例如文章开头所提到的svn和git应该是较为流行的两个版本控制工具,目前文章中提到的demo源码都是托管于github上,方便大家去查阅和学习,我的博客中偶尔也会写一些版本控制相关的文章。有人也对于两个工具做了一个简单的总结:“svn 好学不好用,git 好用不好学”。当然,别人所说的总结都只是代表别人,不能代表你的观点,工具的好坏以及适合与否只有你亲身体验过才会知道。
关于两者的区别,可以参考如下两篇文章,http://www.jianshu.com/p/bfec042349cahttp://www.cnblogs.com/somethingWithiOS/p/5636356.html,区别还是很多的,但是最终的目的只有一个,提高我们的开发效率,减少时间成本。
    还有比如“那个谁谁谁用了git了”“git比svn要好”等等诸如此类的观点,所以“我们也要用git”,针对于此,我想说的是,我们是为了解决问题,而不是为了技术而技术,要根据自身情况出发,适合自己的才是最好的。
    这两个工具都很优秀,具体选哪个,自行决定,关于svn服务器的搭建,网上教程很多,git的话也有一些国内的替代仓库,GitCafe的GitCafe - Share a cup of Open Source,CSDN的CODE,OSChina的代码托管 - 开源中国社区,或者你也可以用gitlab自己搭建一个私有仓库,如果有时间的话,会介绍一下两个工具搭建的详细步骤,你现在也可以搜索一下,相关教程也是很多的。

结语

    还是要重点提一下,版本控制工具在项目的持续集成和持续部署中扮演着重要的角色,这个知识点会在以后的篇幅中展开论述(这里先占个坑)。本篇关于版本控制的文章到此也就告一段落了,主要讲述了一下定义及版控的好处,最后提了一下几种具体的实施方案,选择哪一种就看各自的需求了,至于最终的方案落地就自己动手实践吧。
 
如果还没开始用版本控制的抓紧时间用起来吧。

Spring+SpringMVC+MyBatis+easyUI整合基础篇(九)版本控制的更多相关文章

  1. Spring+SpringMVC+MyBatis+easyUI整合基础篇

    基础篇 Spring+SpringMVC+MyBatis+easyUI整合基础篇(一)项目简介 Spring+SpringMVC+MyBatis+easyUI整合基础篇(二)牛刀小试 Spring+S ...

  2. Spring+SpringMVC+MyBatis+easyUI整合基础篇(六)maven整合SSM

    写在前面的话   承接前文<Spring+SpringMVC+MyBatis+easyUI整合基础篇(五)讲一下maven>,本篇所讲述的是如何使用maven与原ssm项目整合,使得一个普 ...

  3. Spring+SpringMVC+MyBatis+easyUI整合基础篇(八)mysql中文查询bug修复

    写在前面的话 在测试搜索时出现的问题,mysql通过中文查询条件搜索不出数据,但是英文和数字可以搜索到记录,中文无返回记录.本文就是写一下发现问题的过程及解决方法.此bug在第一个项目中点这里还存在, ...

  4. Spring+SpringMVC+MyBatis+easyUI整合基础篇(十一)SVN服务器进阶

    日常啰嗦 上一篇文章<Spring+SpringMVC+MyBatis+easyUI整合基础篇(十)SVN搭建>简单的讲了一下SVN服务器的搭建,并没有详细的介绍配置文件及一些复杂的功能, ...

  5. Spring+SpringMVC+MyBatis+easyUI整合基础篇(十二)阶段总结

    不知不觉,已经到了基础篇的收尾阶段了,看着前面的十几篇文章,真的有点不敢相信,自己竟然真的坚持了下来,虽然过程中也有过懒散和焦虑,不过结果还是自己所希望的,克服了很多的问题,将自己的作品展现出来,也发 ...

  6. Spring+SpringMVC+MyBatis+easyUI整合基础篇(一)项目简述及技术选型介绍

    作者:13GitHub:https://github.com/ZHENFENG13版权声明:本文为原创文章,未经允许不得转载. 萌芽阶段 很久之前就开始打算整理一下自己的技术博客了,由于各种原因(借口 ...

  7. Spring+SpringMVC+MyBatis+easyUI整合基础篇(一)项目简介

    很久之前就打算开始写一下自己的技术博客了,实在抽不出时间所以计划一直搁置了,最近项目进度渐渐缓了下来,不那么忙了,也因此开始筹备自己的博客.说到这次博客的主角,也是无心插柳找到的,来源于两年前自己写的 ...

  8. Spring+SpringMVC+MyBatis+easyUI整合基础篇(三)搭建步骤

    框架介绍: 主角即Spring.SpringMVC.MyBatis.easyUI,大家应该也都有所了解,概念性的东西就不写了,有万能的百度.   工作环境:       jdk 1.7       m ...

  9. Spring+SpringMVC+MyBatis+easyUI整合基础篇(二)牛刀小试

    承接上文,该篇即为项目整合的介绍了. 废话不多说,先把源码和项目地址放上来,重点要写在前面. github地址为ssm-demo 你也可以先体验一下实际效果,点击这里就行啦 账号:admin 密码:1 ...

随机推荐

  1. Android中SharedPreferences介绍和使用方法

    1.SharedPreferences简介 为了保存软件的设置参数,Android 平台为我们提供了一个SharedPreferences 类,它是一个轻量级的存储类,特别适合用于保存软件配置参数.使 ...

  2. 负载均衡软件LVS分析四(测试)

    一.启动LVS集群服务LVS负载均衡管理和使用有两种方式,一种是以ipvsadm命令行脚步与ldirectord监控方式,一种是以Piranha工具进行管理和使用.下面分别介绍. 1.利用ipvsad ...

  3. iOS tabbar点击动画效果实现

    正常情况下,我们点击tabbar都只有一个变色效果,但有时候,如果我们想给它添加一个点击动画,该如何做呢? 先上几个效果图: 1.先放大,再缩小 2.Z轴旋转               3.Y轴位移 ...

  4. Android系列一、创建项目

    本文是在MAC下的Android Studio操作的. 一.Android入门 1.打开Android Studio,界面如下: 几个选项的意思: 创建一个新的项目 打开一个已经存在的项目 从版本管理 ...

  5. MATLAB绘制等高线和梯度场

    clear;clc;close all [X,Y] = meshgrid(-:.:); % 产生网格数据X和Y Z = X.*exp(-X.^ - Y.^); % 计算网格点处曲面上的Z值 [DX,D ...

  6. Hadoop权威指南:FSDataInputStream对象

    Hadoop权威指南:FSDataInputStream对象 FileSystem对象中的open()方法返回的是FSDataInputStream对象, 而不是标准的java.io类对象,这个类是继 ...

  7. 使用Navicat Premium 链接本地数据库的方法

    在工作中,为了更方便的使用数据库,不免会用到Navicat Premium: 于是在重新安装电脑系统之后,原本想在其中链接一下本地数据库, 只是在链接途中要写的密码一项却不晓得应该写什么,想了很久密码 ...

  8. 华为oj---合并数组

    题目标题: 将两个整型数组按照升序合并,并且过滤掉重复数组元素 详细描述: 接口说明 原型: voidCombineBySort(int* pArray1,intiArray1Num,int* pAr ...

  9. js精要之继承

    // 继承object.prototype的方法 // hasOwnProperty() //检查是否存在一个给定名字的自有属性 // propertyIsEnumerable() // 检查一个自有 ...

  10. <C++Primer>第四版 阅读笔记 第四部分 “面向对象编程与泛型编程”

    继承和动态绑定与数据抽象一起成为面向对象编程的基础. 模板使我们能够编写独立于具体类型的泛型类和泛型函数. 第15章 面向对象编程 面向对象编程基于三个基本概念:数据抽象.继承和动态绑定.在C++中, ...