版本控制器SVN

一、版本控制

  • 为什么需要版本控制?
    • 小明负责的模块就要完成了,就在即将Release之前的一瞬间,电脑突然蓝屏,硬盘光荣牺牲!几个月来的努力付之东流——需求之一:备份!
    • 这个项目中需要一个很复杂的功能,老王摸索了一个星期终于有眉目了,可是这被改得面目全非的代码已经回不到从前了。什么地方能买到哆啦A梦的时光机啊?需求之二:代码还原!
    • 小刚在java文件中的第30行声明了一个方法,叫count(),保存到了文件服务器上;小强在Analysis.java文件中的第50行声明了一个方法,叫sum(),也保存到了文件服务器上,于是,count()方法就只存在于小刚的记忆中了——需求之三:协同修改!
    • 老许是一位项目经理,我会告诉你他亲自为工程创建版本号吗?我会告诉你他把每一个版本都保存一份吗?我会告诉你这些工程里其实有很多文件都是重复的吗?我会告诉你老许为这事删了很多电影吗?——需求之四:版本管理和版本发布!
    • 老王是另一位项目经理,每次因为项目进度挨骂之后,他都不知道该扣哪个程序员的工资!就拿这次来说吧,有个该死的Bug调试了30多个小时才知道是因为相关属性没有在应用初始化时赋值!可是二胖、王东、刘流和正经牛都不承认是自己干的!——需求之五:追溯问题代码的编写人和编写时间!
    • 小温这两天幸福的如同掉进了蜜罐里,因为他成功的得到了前台MM丽丽的芳心,可他郁闷的是这几天总是收到QA小组的邮件,要求他修正程序中存在的Bug,可他自己本地电脑上是没有这些Bug的,“难道我的代码被哪个孙子给改了?”。是的,小温没来的时候,丽丽是QA小组小郑的女朋友啊!——需求之六:权限控制!

使用版本控制能够解决上面的问题吗?是的!

  • 什么是版本控制?
    • 版本控制:Revision control,最初来源于工程设计领域,是维护工程蓝图的标准做法,能追踪工程蓝图从诞生一直到定案的过程。是一种记录若干文件内容变化,以便将来查阅特定版本修订情况的系统。
    • Subversion就是一款实现版本控制的工具软件,通常也称为版本控制器,简称SVN。

SVN的工作原理:采取客户端/服务器模式,多个协同开发的程序员把各自的源代码提交到版本控制器的服务器端,由SVN服务器对各个版本进行编号,并负责管理冲突,SVN能够将冲突的代码以比较友好的格式呈现出来,便于开发人员比较,进行取舍。

  • SVN基本操作
    • 检出(checkout):将一个服务器端创建好的项目整个下载到本地,这是到项目组后参与开发的第一步,只需执行一次。
    • 更新(update):将本地文件更新为服务器端的最新版本,通常为每天上班时或修改公共文件之前执行一次。

提交(commit):将本地修改提交到服务器端。通常每天下班前或每实现一个功能、完成一个模块时执行一次。

 

 

本教程由尚硅谷教育大数据研究院出品,如需转载请注明来源,欢迎大家关注尚硅谷公众号(atguigu)了解更多。