“玩转”Java 系列
—————————————————————————————
1
【更多 Java – Android 资料下载,可访问尚硅谷(中国)官网 www.atguigu.com 下载区】
版本控制器:SVN
1 开发中的实际问题
1.1 小明负责的模块就要完成了,就在即将 Release 之前的一瞬间,电脑突然蓝屏,
硬盘光荣牺牲!几个月来的努力付之东流——需求之一:备份!
1.2 这个项目中需要一个很复杂的功能,老王摸索了一个星期终于有眉目了,可是这
被改得面目全非的代码已经回不到从前了。什么地方能买到哆啦 A 梦的时光机啊?
需求之二:代码还原!
1.3 小刚和小强先后从文件服务器上下载了同一个文件:Analysis.java。小刚在
Analysis.java 文件中的第 30 行声明了一个方法,叫 count(),先保存到了文件服务
器上;小强在 Analysis.java 文件中的第 50 行声明了一个方法,叫 sum(),也随后
保存到了文件服务器上,于是,count()方法就只存在于小刚的记忆中了——需求
之三:协同修改!
1.4 老许是一位项目经理,我会告诉你他把每一个版本都保存一份吗?我会告诉你这
些工程里其实有很多文件都是重复的吗?我会告诉你老许为这事删了很多电影
吗?——需求之四:多版本项目文件管理!
1.5 老王是另一位项目经理,每次因为项目进度挨骂之后,他都不知道该扣哪个程序
员的工资!就拿这次来说吧,有个该死的 Bug 调试了 30 多个小时才知道是因为
相关属性没有在应用初始化时赋值!可是二胖、王东、刘流和正经牛都不承认是
自己干的!——需求之五:追溯问题代码的编写人和编写时间!
1.6 小温这两天幸福的如同掉进了蜜罐里,因为他成功的得到了前台 MM 丽丽的芳心,
可他郁闷的是这几天总是收到 QA 小组的邮件,要求他修正程序中存在的 Bug,
可他自己本地电脑上是没有这些 Bug 的,“难道我的代码被哪个孙子给改了?”。
是的,小温没来的时候,丽丽是 QA 小组小郑的女朋友啊!——需求之六:权限
控制!
2 版本控制简介
2.1 版本控制[Revision control],最初来源于工程设计领域,是维护工程蓝图的标准做
法,能追踪工程蓝图从诞生一直到定案的过程。是一种记录若干文件内容变化,
以便将来查阅特定版本修订情况的系统。
2.2 Subversion 就是一款实现版本控制的工具软件,通常也称为版本控制器,简称 SVN。
Subversion 是 Apache 软件基金会组织下的一个项目。
2.3 Subversion 的优良特性
①目录版本控制
CVS 只能追踪单个文件的历史,但是 Subversion 实现了一个“虚拟”文件系
统,可以追踪整个目录树的修改,文件和目录都是版本控制的,结果就是可以在
客户端对文件和目录执行移动和复制命令。
②原子提交
提交要么完全进入版本库,要么一点都没有,这允许开发者以一个逻辑块提
交修改。
③版本控制的元数据
每个文件和目录都有一组附加的“属性”,你可以发明和保存任意的键/值对,
属性也会像文件内容一样被纳入版本控制。