导航
导航
文章目录
  1. 一、SVN简介
  2. 二、安装前准备
    1. 2.1、Apache HTTP Serve
    2. 2.2、Subversion(SVN)
    3. 2.3、TortoiseSVN
    4. 2.4、LanguagePack
  3. 三、安装步骤
    1. 3.1、安装 Apache HTTP Server
    2. 3.2、安装 Subversion
    3. 3.3、SVN与Apache结合
    4. 四、SVN配置
    5. 4.1、设定SVN文件库路径
    6. 4.2、SVNPath 语法:
    7. 4.3、SVNParentPath语法:
  4. 五、使用方法
    1. 5.1、建立版本库(Repository)
    2. 5.2、导入项目
  5. 六、权限控制
    1. 6.1、Basic(基本)访问控制的配置
    2. 6.2、用Apache的htpasswd指令生成用户名和密码
    3. 6.3、配置文件库访问权限文件
  6. 七、结语

搭建SVN版本控制环境

最近在乱做一些东西,有时会搞错了一些代码,但又无法恢复到以前某个状态,所以就有必要使用SVN进行版本控制了。Subversion 你知道是什么吗?本文将以Windows平台为例,结合自己的经历,说下版本控制环境的搭建和使用。说明:本文将使用Apache+Subversion+TortoiseSVN进行构建。

一、SVN简介

Subversion,一种功能强大的开源版本控制工具,其不仅可以管理程序源代码,也可以应用于其他协作管理数据的工作,在服务器端,如将其与Apache 的 HTTP 服务器相结合后,可实现更多的高级管理功能和安全特性,现在Subversion已基本取代 CVS,成为新一代的开源版本控制工具。举例:一个项目共花100天完成,到最后一天时,发现全错了,我想恢复到第50天某个时间的状态。怎么办?你每一天每次改动都有备份?

二、安装前准备

2.1、Apache HTTP Serve

官方下载地址:http://httpd.apache.org,目前最新版本为Apache 2.2.10,我下载的是 apache_2.2.10-win32-x86-openssl-0.9.8i.msi

2.2、Subversion(SVN)

官方下载地址:<”http://subversion.tigris.org/project_packages.html>,最新版本为 Subversion 1.5.4 下载时要注意下载和Apache2.2.x版本对应的,我下载的是 svn-win32-1.5.4.zip(二进制文件),你也可以下载Setup-Subversion-1.5.3.msi(Windows安装文件,一路“下一步”可以省去配置环境变量的麻烦)。

2.3、TortoiseSVN

TortoiseSVN是Subversion的Windows客户端,可以看作Windows资源管理器的插件,安装之后Windows就可以识别Subversion的工作目录。简单的说就是Subversion可视化操作工具。官方下载地址:http://tortoisesvn.tigris.org/,我下载的是TortoiseSVN-1.5.5.14361-win32-svn-1.5.4.mis

2.4、LanguagePack

TortoiseSVN 中文语言包,需注意到是要和客户端程序版本相同。这里是LanguagePack_1.5.5.14361-win32-zh_CN.msi语言包

三、安装步骤

3.1、安装 Apache HTTP Server

安装非常简单,不明白可以参考本站文章。要注意的是,电脑如果已经安装了IIS,要么暂停IIS服务,要么把IIS的端口改为非80端口。

3.2、安装 Subversion

如果你前面下载的是Windows安装文件,那么你一路下一步就好了。
如果你下载的是zip压缩包,那么请将压缩包解压,比如我解压到C:\Program Files\Subversion。那么在“系统属性“-“高级“-“环境变量“-“系统变量PACH“的值后面加上;C:\Program Files\Subversion\bin就行了。

3.3、SVN与Apache结合

首先将Subversion安装目录bin下面的两个文件:mod_authz_svn.so和mod_dav_svn.so复制到Apache安装目录modules目录下,然后将Subversion安装目录bin下面的libdb44.dll复制到Apache安装目录bin目录下 。

在httpd.conf中查找下面2行代码,并将其前面的”#“号去掉

#LoadModule dav_module modules/mod_dav.so
#LoadModule dav_fs_module modules/mod_dav_fs.so

在所有LoadModule后面添加下面代码,重启Apache后状态栏变成Apache/2.2.10 SVN1.4.6 DAV/2

LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so

四、SVN配置

4.1、设定SVN文件库路径

要设定 URL 路径与文件库实际路径的对应关系。对应的方式有两种,分别是 SVNPath(适合指定单个文件库的路径) 与SVNParentPath(多个文件库的路径)。完成后,将代码加入httpd.conf中。

4.2、SVNPath 语法:

<Location /svn/poject>
DAV svn
SVNPath d:/svn/poject
</Location>

其中 “/svn/poject” 就是用户端存取特定文件库的 URI,SVNPath 后面指定的路径则是文件库的绝对路径。
注意 Location 标签后面的 /svn/poject的第一个斜线不可少!

4.3、SVNParentPath语法:

<Location /svn>
DAV svn
SVNParentPath d:/svn
</Location>

这表示可以让任何人都可以透过 http://myserver/svn/ <文件库名称> 的方式,存取位于 d:/svn这个目录以下的所有文件库。也就是说,这个设定动作只需要一次,如果使用 SVNPath,那么你必须为各个文件库分别指定对应的路径。

五、使用方法

5.1、建立版本库(Repository)

方法一.在提示符窗口中输入svnadmin create D:\svn\poject,路径填你喜欢的就可以了。

方法二.使用TortoiseSVN图形化完成这一步,在目录D:\svn\poject下右键->TortoiseSVN->Create Repository here…, 然后可以选择版本库模式, 这里使用默认即可, 然后就自动创建了一系列目录和文件。

5.2、导入项目

5.2.1、使用命令行操作,在命令行中CD到项目文件夹下后,执行下面命令,其中M后面的是项目信息,可以任意填写。

svn import "http://localhost/svn/poject" -m "Initial repository layout"

5.2.2、使用TortoiseSVN图形化

右键->TortoiseSVN->Import…
URL of repository输入”http://localhost/svn/poject"

六、权限控制

Sebversion 提供了多种验证使用者身份的方式。

6.1、Basic(基本)访问控制的配置

修改 httpd.conf 的 ,设定如下:

<Location /svn>
DAV svn
# 指定多个版本库路径
SVNParentPath d:\svn 
# 认证的名称,显示于登录提示框
AuthName "欢迎登录"
# 策略文件,指定用户或组在版本库中目录的访问权限
AuthzSVNAccessFile "d:\svn\authz"
# 表示只有经过认证的用户才可以访问
Require valid-user
#表示允许匿名访问
Satisfy Any
# 认证的类型,即使用基本验证
AuthType Basic
# 存储用户登录信息的文件
AuthUserFile "d:\svn\passwd"
</Location>

6.2、用Apache的htpasswd指令生成用户名和密码

htpasswd -c d:\svn\passwd username

-c 的作用是创建用户文件passwordfile 下次就不用-c参数,而是用-m参数,因为文件passwordfile已经创建。
username是用户名
htpasswd -m d:/svn/passwd username

6.3、配置文件库访问权限文件

假设为projectA和projectB都建立了相应的版本库,可以在d:\svn\authz文件中

[projectA:/]
username1 = rw
[projectA:/]
username2 = r

[projectA:/trunk]
username1 =
username2 = rw

[projectB:/]
* = r
[projectB:/trunk]
username1 =

另外,你还可以在d:\svn\authz中定义一组用户,然后按组进行权限配置#各组成员名单

[groups]
groups1 = username1
groups2 = username2

#所以文件库都可以匿名访问,但只有groups1组用户有读写权限
[/] 
* = r
@groups1 = rw

#在文件库projectA下groups2组的用户也有读写权限
[/projectA] 
groups2 = rw

#禁止所有用户访问/private文件库
[/private] 
* =

七、结语

上文只是简单讲解SVN的搭建和使用,属个人学习笔记。事实上,普通用户是完全可以使用现有的SVN源代码托管服务,比如国内的 http://svn.w18.nethttp://www.svnhost.cn/ ,还有更专业的 http://code.google.com/

备注:这是一篇旧文章归档,实际发布日期为:2008-10-25

支持一下
扫一扫,支持一下