版本控制器:SVN

1 篇文章 0 订阅

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

2.4 SVN 的工作原理:采取客户端/服务器模式——在服务器的版本库中保存项目文件的各个版本,所有参与协同开发的程序员在自己本地电脑上保存一个工作副本。
SVN 支持程序员将本地副本更新到服务器端的最新版本,也支持将本地副本的最新改变更新到服务器端,而且后面的更新不会覆盖前面的更新,而是作为一个新的版本被保存下来——SVN 甚至支持将本地工作副本恢复为服务器端保存的某一个历史版本。
在这里插入图片描述

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

3.Subversion 安装与配置

3.1 安装服务器端程序

①服务器端程序版本
目前 Subversion 的最新版本是 1.9.0-alpha2,这是一个测试版。官方网站推荐使用的版本是 1.8.9,原话是:The best available version of Apache Subversion is: 1.8.9
②下载源码包
Apache 组织自己维护更新的只是 Subversion 的源码,各个版本的源码包的下载地址是:http://subversion.apache.org/download/
Subversion 源码是使用 C 语言开发的。
③下载二进制安装包
Subversion 在不同平台下的二进制包是由不同组织构建实现的,Windows 平台下的二进制包实现情况如下:在这里插入图片描述
所以,服务器端程序的下载地址可以使用: http://sourceforge.net/projects/win32svn/files/latest/download 下载到的文件是:Setup-Subversion-1.8.9-1.msi
④双击运行 Setup-Subversion-1.8.9-1.msi
在这里插入图片描述

在这里插入图片描述
不整合 Apache 服务器可以忽略此选项
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
⑤安装程序会自动配置 Path 环境变量
D:\DevInstall\Subversion\bin
所以 bin 目录下的可执行文件可以在任意目录下运行。
⑥验证是否安装成功
在命令行输入:svn --version
看到如下信息就表示服务器端程序安装成功
在这里插入图片描述
现在有Server了,我们还需要repository,不然我们数据提交放哪呢?

3.2 创建版本库

首先创建一个目录D:\DevRepository\SvnRep\OA
在这里插入图片描述
执行svnadmin create D:\DevRepository\SvnRep\OA
在这里插入图片描述
发现该目录不再是空的啦
在这里插入图片描述
我们再创建一个 svnadmin create D:\DevRepository\SvnRep\ERP
在这里插入图片描述
在这里插入图片描述

3.3 启动服务器端程序

①SVN服务器必须处于运行状态才能相应客户端请求,帮助我们管理项目文件。所以我们必须将SVN服务器启动起来。启动SVN服务器有两种方法,一个是命令行方式,一个是注册Windows服务。
②命令行方式

  1. 命令格式
主命令参数1参数2参数3
svnserve-d 表示后台执行-r 表示版本库根目录路径

在这里插入图片描述

  1. 确认服务确实启动了
    再打开一个命令行 输入netstat -an
    有监听3690端口,表示正常运行
    在这里插入图片描述
    命令行方式的缺陷:只要运行服务器端程序的命令行窗口一关闭,服务就停止了,很不方便,而且每次开机都需要手动启动。
  2. 注册Windows服务
    ①将SVN服务端程序注册为Windows服务,就可以让SVN服务随系统一起启动,克服了命令行方式的不足。
    ②注册Windows服务需要利用XP、2000以上系统自带工具Service Control,执行文件是sc.exe,注意这个命令不是SVN的命令。
    ③命令格式
主命令子命令参数1参数2参数3参数4
sccreate服务名binpath=“运行服务所需要的二进制文件路径以及运行该二进制文件的命令行参数”start=auto 表示自动启动depend=Tcpip表示依赖Tcpop协议

注意:在这个命令中,等号左边都没有空格,右边都有一个空格!
④binpath 组成结构说明

svnserve.exe路径svnserve命令参数1svnserve命令参数2svnserve命令参数3
SVN安装目录\bin\svnserve.exe- - service 表示以服务方式启动Subversion-r表示版本库根目录版本库目录

⑤关于 版本库目录

单仓库指定与具体项目对应的仓库目录例如:D:\DevRepository\SvnRep\CRM只能为一个项目服务
多仓库指定版本库的根目录例如D:\DevRepository\SvnRep可以为多个项目服务

⑥最终命令举例

Microsoft Windows [版本 6.3.9600]
(c) 2013 Microsoft Corporation。保留所有权利。

C:\Users\john>sc create SVNService binpath= "D:\DevInstall\SubVersion\bin\svnser
ve.exe --service -r D:\DevRepository\SvnRep" start= auto depend= Tcpip

但是需要权限
在这里插入图片描述
需要用管理员身份打开命令行
在这里插入图片描述
检查是否可以启动,右键这台电脑,点击管理。
在这里插入图片描述
启动成功
在这里插入图片描述
或者 启动服务的命令格式如下:
在这里插入图片描述
在这里插入图片描述

  • 打开命令行窗口运行 netstat -an查看3690端口是否被监听
  • 如果启动失败,那很有可能是binpath中的内容有错误,此时只能将已经创建的服务删除,重新创建。
  • 删除服务之前,最好先停止服务。停止服务的命令格式如下:
    在这里插入图片描述
  • 删除服务的命令格式如下:
    在这里插入图片描述
  • 删除、启动、停止服务同样需要管理员权限

4.使用命令行模式访问SVN服务器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值