日常啰嗦

还好在第一篇文章里就列好了接下来的主线及要写的知识点,不然都不知道要写什么东西了,开篇里已经列了基础篇要讲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. JSP/Servlet(一)

    JSP/Servlet(一)   Web应用和web.xml文件: 一.构建Web应用: 1.在任意目录下创建一个文件夹. 2.在第1步所建的文件夹内建一个WEB-INF文件夹(注意大小写). 3.进 ...

  2. Pomelo的Filter

    在pomelo中,filter分为before filter和after filter.在一个请求到达Handler被处理之前,可以经过多个before Filter组成的filter链进行一些前置处 ...

  3. iOS页面间传值的五种方式总结(Delegate/NSNotification/Block/NSUserDefault/单例)

    iOS页面间传值的方式(Delegate/NSNotification/Block/NSUserDefault/单例) iOS页面间传值的方式(NSUserDefault/Delegate/NSNot ...

  4. Vmware虚拟机安装Ubuntu 16.04 LTS(长期支持)版本+VMware tools安装

    今天用VMware虚拟机安装了Ubuntu 16.04,过程用点繁琐,顺便又安装了VMware tools,这样就可以全屏显示Ubuntu系统了,下面是具体的安装过程! 第一步:准备工作 1.下载Ub ...

  5. Oracle检查锁及其等待的行ROWID

    SELECT l.session_id sid ,        substr(o.owner,               1,               8) owner,        o.o ...

  6. WPF开发进阶 - Fody/PropertyChanged(一)

    INotifyPropertyChanged 在WPF MVVM模式开发中,实现INotifyPropertyChanged的ViewModel是非常重要且常见的类: public class Mai ...

  7. spring事件驱动模型--观察者模式在spring中的应用

    spring中的事件驱动模型也叫作发布订阅模式,是观察者模式的一个典型的应用,关于观察者模式在之前的博文中总结过,http://www.cnblogs.com/fingerboy/p/5468994. ...

  8. 如何修改Window系统下PATH路径以及win8下masm32V11

    如何修改Window系统下PATH路径   //其实这个都是临时性的, 退出dos窗口就没有用了,只是做个笔记罢了   C:\Users\Administrator>    set path=E ...

  9. java为移动端写接口

    java作为一门后端语言,其厉害之处在于web,大家比较熟知的各种网络应用,java都能做,那么在这个移动优先的时代,如何继续发挥java的强大呢.通常是让java作为一个app的服务端,为app客户 ...

  10. BZOJ 1875: [SDOI2009]HH去散步(矩阵乘法)

    首先,题意就把我们引向了矩阵乘法,注意边长m<=60,那么就按边建图,变成一个120个点的图,然后乱搞就行了。 PS:WA了N久改了3次终于A了QAQ CODE: #include<cst ...