当前位置:首页 > 技术文章 > svn > 启动Subversion服务
启动Subversion服务
文章来源:本站原创  浏览次数:98  发布日期:2013-02-05

在服务器端,打开一个命令行窗口,用CD命令进入 Subversion 安装目录下的 bin 目录,运行如下指令:

svnserve -d -r E:\svn 其中的 -d 参数表示svnserve.exe 将会作为一个服务程序运行在后台,而 -r 参数表示将 E:\svn 目录指定为代码库的根目录。这样,当客户端使用类似 svn://192.168.0.1/foo 这样内容的 URL 来访问服务器时候,其所访问到的真实代码库,其实就是 E:\svn\foo

在服务器端的 E:\svn 目录下,建立一个名为 arm 的代码库,命令如下:

E:\svn>svnadmin create arm 使用上述命令之后,如果不出问题的话,在 E:\svn 目录下就会多出一个叫做 arm 的目录,其下具备 confdavhookslocksdb 等子目录或文件,此即一个名为arm的代码库。从此,通过 svn://192.168.0.1/arm 这样的 URL,我们就可以对这个代码库进行访问了。接下来就要进入本文的正题了,也就是权限配置部分了。

其实进入 arm\conf 目录你就会发现,它下面已经存在三个写了一些帮助信息和示例的配置文件,以帮助用户尽早掌握其配置方法。这三个默认的配置文件分别是 svnserve.confpasswdauthz 。其中后两者没有后缀,对于 windows 系统的用户来说,看起来总是有些怪异,所以在接下来的章节里面,我将它们两个都给添加了个 conf 后缀,以便管理。

在服务器端,编辑代码库的 arm\conf\svnserve.conf 文件,如下:

[general]

password-db = passwd.conf

anon-access = none

auth-access = write

authz-db = authz.conf

在服务器端,新建 arm\conf\passwd.conf 文件,如下:

[users]

morson = ShowMeTheMoney

michael = mysecretpassword

scofield = hellolittilekiller

lincon = asyouknows111

rory = 8809117

linda = IlikeWorldCup2006

建立目录访问权限控制文件

在服务器端,新建arm\conf\authz.conf 文件,内容如下:

[groups]

g_vip =morson

g_manager= michael

g_beijing= scofield

g_shanghai= lincon

g_headquarters= rory, linda

g_docs =linda

[arm:/]

@g_manager= rw

* = r

[arm:/diary/headquarters]

@g_manager= rw

@g_headquarters= rw

@g_vip =r

* =

[arm:/diary/beijing]

@g_manager= rw

@g_beijing= rw

@g_vip =r

* =

[arm:/diary/shanghai]

@g_manager= rw

@g_shanghai= rw

@g_vip =r

* =

[arm:/ref]

@g_manager= rw

@g_docs= rw

* = r

[arm:/temp]

* = rw

导入代码

在客户机 F:\temp 目录下,建立好前述“背景假设”一节中描述的目录结构,然后用命令 F:\temp>svn import arm svn://192.168.0.1/arm --username michael--password mysecretpassword 导入整个目录结构。

这条指令的精确意思是,将 arm 目录下面的所有东西,导入到那个名叫 arm 的代码库中去。如果你不指定源目录,则 svn 会默认将当前目录作为源目录。比如说,你处于 F:\temp 目录下的时候,直接执行 svn import svn://192.168.0.1/arm ,那么当你取出你的代码的时候,你会发现,居然多了一层名为 arm 的目录。结果,你就必须使用类似 svn://192.168.0.1/arm/arm 这样怪异的URL,才能够正确访问到你的代码们。

这一点粗看好像不是特别重要,不过联想到前述的目录授权规则,可都是按照标准的项目目录结构来设计的。突然之间,你项目的根目录之上,多出了一个名为 arm 的目录,那么我们的所有目录授权规则,基本上都要全部改过了,否则除了根目录,你永远会得到一个莫名其妙的“access denied”。由于 Subversion 在这一步骤上的界面不够人性化,因此这是初学者很容易弄混的地方之一。

测试

在服务器上,打开一个 DOS Prompt窗口,输入如下指令:

svn cosvn://127.0.0.1/arm --no-auth-cache --username rory --password 8809117

我们应该得到如下目录结构:

Arm

├─diary

└─headquarters

├─ref

└─temp

然后修改ref目录下任意文件并提交,服务器将会报错“Access denied”,Bingo!

详细说明

下面将详细两个配置文件:svnserve.conf authz.conf,通过对配置逐行的描述,来阐明其中的一些细节含义。

这里首先要注意一点,任何配置文件的有效配置行,都不允许存在前置空格,否则程序可能会出错,给你一个 Option expected 的提示。  

svnserve.conf

首先,我们告诉 svnserve.exe,用户名与密码放在passwd.conf 文件下。当然,你可以改成任意的有效文件名,比如默认的就是 passwd:

password-db= passwd.conf

接下来这两行的意思,是说只允许经过验证的用户,方可访问代码库。目前只允许 read write none 三种值

  anon-access = none

  auth-access = write

接下来就是最关键的一句呢,它告诉svnserve.exe,项目目录访问权限的相关配置是放在 authz.conf 文件里:

authz-db= authz.conf


原文来自:启动Subversion服务 http://www.redyun.net/technology/33.html

红云案例Case