版本控制工具简篇:SVN

1 开发中的实际问题

1.1 开发中的实际问题:备份

  • 小明负责的模块将要完成了,就在即将Release之前的一瞬间,电脑突然蓝屏了,硬盘光荣牺牲了,几个月来的努力付之东流。需求之一:备份

1.2 开发中的实际问题:代码还原

  • 这个项目需要一个很复杂的功能,老王摸索了一个星期终于有眉目了,可是代码已经改的面目全非,完全回不到从前。需求之二:代码还原

1.3 开发中的实际问题:协同修改

  • 小刚和小强先后从服务器上下载了同一个文件:Analysis.java。小刚在Analysis.java文件的第30行生命了一个方法,叫count(),先保存到了文件服务器上;小强在Analysis.java文件中的第50行声明了一个方法,叫sum(),也随后保存到了文件服务器上,于是,count()方法只能保存在小刚的记忆之中了。需求之三:协同修改

1.4 开发中的实际问题:多版本项目文件管理

  • 老徐是以为项目经理,我会告诉你他把每一个版本都保存一份吗?我们会告诉你这些工程里面有很多文件是重复的吗?我会告诉你他为此删了很多电影吗?需求之四:多版本项目文件管理

1.5 开发中的实际问题: 追溯问题代码的编写人和编写时间

  • 老王是另一个项目经理,每次因为项目进度被骂之后,他都不知道该找那个程序员。就拿这次来说吧,有个bug调试了很长时间才知道是因为相关属性没有在应用初始化的时候赋值。可是二胖、王东等都不承认是自己干的。需求之五:追溯问题代码的编写人和编写时间

1.6 开发中的实际问题:权限控制

  • 小温这2天幸福的如同掉进了蜜罐里,因为他成功的得到了前台MM小丽的芳心,可他郁闷的是这几天他总是受到QA小组发来的邮件,要求他修改程序中的bug,可是他本地电脑上是没有这些bug的,“难道我的代码被谁修改了”,是的,小温没来之前,小丽是QA小组小徐的女朋友。需求之六:权限控制

2 版本控制简介

2.1 版本控制的概述

  • 版本控制,最初来源于工程设计领域,是维护工程蓝图的标准做法,能追踪工程蓝图从诞生一直到定案的过程。是一种记录若干文件内容变化,以便将来查阅特定版本修订情况的系统。

2.2 Subversion

  • Subversion就是一款实现版本控制的工具软件,通常也称为版本控制器,简称SVN。
  • Subversion是Apache软件基金会组织下的一个项目。

2.3 Subversion的优秀特性

  • ①目录版本控制:CVS只能追送的那个文件的历史,但是Subversion实现了一个“虚拟”的文件系统,可以追踪整个目录树的修改,文件和目录都是版本控制的,结果就是可以在客户端对文件和目录进行移动和负责命令。
  • ②原子提交:提交要么是完全进入版本库,要么一点没有,这允许开发者以一个逻辑块提交修改。
  • ③版本控制的元数据:每个文件和目录都有一组附加的“属性”,你可以发明和保存任意的键值对,属性也会像文件内容一样被纳入到版本控制之中。
  • ④可选的网络层:Subversion在版本库访问方面有一个抽象概念,利于人们去实现新的网络机制,Subversion的“高级”服务器是Apache网络服务器的一个模块。使用HTTP的变种协议,这给了Subversion在稳定性和交互性方面很大的好处,可以直接使用服务器的特性,例如认证、授权、传输压缩和版本库浏览等等。也有一个轻型的,单独运行的Subversion服务器,这个服务器使用自己的协议,可以轻松的用SSH封装。
  • ⑤一致的数据处理:Subversion使用二进制文件差异算法展现文件的区别,对于文件和二进制文件具备一致的操作方式,2中类型的文件都压缩存放在版本库中,差异在网络上的双向传递。
  • ⑥高效的分支和标签:分支和标签的代码不与工程的大小成比例,Subversion建立分支和标签时只是复制项目,使用了一种类似于硬链接的机制,因而这类操作通常会花费很少并且相对固定的时间,以及很小的版本库空间。

2.4 SVN的工作原理

  • 采用的是客户端/服务器模式。
  • 在服务器的版本库中保存项目文件的各个版本,所有参与协同开发的程序员在自己本地电脑上保存一个工作副本。SVN支持程序员将本地副本更新到服务器端的最新版本,也支持将本地副本的最新改变更新到服务器端,而且后面的更新不会覆盖签名的更新,而是作为一个新的版本被保存下来--SVN甚至支持将本地工作副本恢复为服务器端保存的某一个历史版本。

2.5 SVN的基本操作

  • ①检出(checkout):将一个服务器端创建好的项目整个下载到本地,这是到项目组后参与开发的第一步,只需要执行一次。
  • ②更新(update):将本地文件更新为服务器端的最新版本,通常为每天上班时或者修改公共文件之前执行一次。
  • ③提交(commit):将本地修改提交到服务器端,通常每天下班前或每实现一个功能、完成一个模块时执行一次。

2.6 SVN的安装

猜你喜欢

转载自www.cnblogs.com/xuweiweiwoaini/p/9824069.html