Subversion用户手册

Subversion用户手册
一. 环境介绍
服务器端Subversion使用svn-1.4.5版本。
二. 服务器的安装和配置
2.1 安装
下载svn-1.4.5-setup.exe文件,运行安装即可。我们使用默认安装路径c:\Program Files\Subversion
2.2 配置服务器
安装后,需要配置才能使用。这里介绍基于svnserve的服务器配置。svnserve是一个轻型的独立服务器,使用普通TCP/IP连接之上的自定义协议。客户端通过使用开头为svn://的URL来访问svnserve服务器。
1) 打开命令提示符窗口,输入以下字符创建svnserve服务:

sc create svnserve binpath= "c:\program files\subversion\bin\svnserve.exe --service --root d:\svnroot" displayname= "Subversion" depend= tcpip start= auto

注:c:\program files\subversion\bin\svnserve.exe 是subversion的安装路径。
d:\svnroot是subversion版本库的存放根目录。
start= auto表明这个服务是开机即自动启动的
注意:“binpath=”后一定要加一空格,否则服务的创建会不正确。
2) svnserve服务创建成功后,打开“控制面板/管理工具/计算机管理/服务”即可看到Subversion服务已创建,启动类型为自动。如下图所示:

此时,服务器配置结束。
三. 版本库
3.1 使用 TortoiseSVN 创建版本库
如果该服务器上已经装了SVN的客户端工具TortoiseSVN,则可以使用TortoiseSVN创建版本库。步骤为:
1) 在d:\svnroot下新建文件夹,命名为rw。
2) 在新创建的文件夹下,右击,选择“TortoiseSVN/在此创建版本库”,在弹出的对话框中选择“本地文件系统”,然后就会在新文件夹创建一个版本库。如下图所示:





3.2 版本库的认证
版本库创建后,还要配置版本库的用户、密码和权限。有认证和授权两种方式。本节介绍认证。
每一个版本库都会有个“conf”文件夹。在此文件夹下,包含“authz”、“passwd”、“svnserve.conf”三个文件。svnserve.conf文件是控制认证和授权政策的中央机构。
1) 在svnserve.conf文件中,指定一个用户密码文件:
[general]
password-db = passwd
注:这里的passwd是指“passwd”文件的相对路径。password-db指向了用户密码文件。
注意:代码一定要顶格写,本文以后提到的编码都要顶格写。
2) 在svnserve.conf文件中,设置访问权限:
svnserve.conf有多个参数,参数anon-access、auth-access可以设置为none、read、write。一般我们设置匿名不可访问,认证访问为可写,代码如下:

anon-access = none
auth-access = write

3) 在passwd文件中设置用户名和密码,代码如下:

[users]
user1 = pwd1
user2 = pwd2
……

这时,即完成了版本库的认证。认证用户可以用上述用户名、密码访问版本库。

3.3 版本库的授权
有时,我们通过授权来配置版本库的用户、密码和权限。Subversion实现了以路径为基础的授权,也就是判断用户是否有操作对应路径的权限。
3.3.1 为单个版本库配置授权
       如果我们只需要对某单个版本库配置授权,可以按以下步骤操作:
1) 在svnserve.conf文件中,指定一个用户密码文件和一个授权文件。

[general]
password-db = passwd
authz-db = authz

注:这里的passwd、authz是指“passwd”、“authz”文件的相对路径。上面的配置说明使用“svnserve.conf”同目录的passwd和authz,其中的password-db指向了用户密码文件,authz-db指向了我们的授权文件。

2) 在passwd文件中设置用户名和密码。
代码如下:

[users]
user1 = pwd1
user2 = pwd2
user3 = pwd3
user4 = pwd4
……
3) 在authz文件中配置授权。
A. 定义组信息
[groups]
# 定义组信息
#group_a指测试人员,group_d是开发人员, group_t是测试人员。
group_a =user1,user2
group_d = user3
group_t = user4

B. 指定对版本库NEWRepository目录的权限。
这里举例说明,具体权限配置视具体情况而定。

[NEWRepository:/]
# 指定对版本库NEWRepository根目录的权限
# 'r' 为只读,'rw'为可读写, ' '为无权限
@group_a = rw
@group_d = rw
@group_t = r

[NEWRepository:/trunk/admin]
# 指定对版本库NEWRepository的/trunk/admin根目录的权限,
# group_a读写,group_d和group_t没有任何权限。
@group_a = rw
@group_d =
@group_t =

4) 把authz文件转化成支持中文目录的格式
如果我们要版本库支持中文目录,只要把authz文件转化为UTF-8格式。具体的做法是用UltraEdit打开authz文件,然后选择“文件->转换->ASCII转UTF-8”,然后保存。
3.3.2 为多个版本库配置授权
通常,有多个版本库同时存在,为了管理的方便,应该使用相同的认证和授权文件,所以应该让所有版本库的配置文件svnserve.conf指向同一个password-db和authz-db文件。这时,我们对上节的步骤做以下修改:
1) 为多个版本库配置公共的password-db和authz-db文件。
在d:\svnroot根目录下,建立命名为password和authz的两个文件,然后在每个项目的svnserve.conf文件中,做如下修改,使之指向同一个password-db和authz-db文件。

[general]
password-db = ..\..\passwd
authz-db = ..\..\authz

2) 改变组命名规则
为单个版本库配置授权时,group_a指测试人员,group_d是开发人员, group_t是测试人员。在多版本库共享配置文件时,需要在组名前加上项目名前缀,如css_group_a指css项目测试人员,css_group_d是css项目开发人员, css_group_t是css项目测试人员。

总结:做了以上两个修改之后,其它步骤与上节相同,即可完成多版本库的授权。
四. 版本库的其他扩展功能
4.1 钩子脚本
4.1.1 设置日志不能为空
在每次提交的时候写明提交的目的是一个很好的习惯,Subversion默认没有提供,但是可以通过钩子实现。版本库的hooks目录中有一些钩子的例子脚本,这些例子脚本适合于Unix/Linux服务器,在Windows下需要修改。将下面的代码存为放到版本库的hooks目录下即可,当你不写日志提交的话就会报告错误。
文件名为pre-commit.bat,文件类型是批处理文件。

@echo off
setlocal
set REPOS=%1
set TXN=%2
rem check that logmessage contains at least 10 chars
svnlook log "%REPOS%" -t "%TXN%" | findstr ".........." > nul
if %errorlevel% gtr 0 goto err
exit 0
:err
echo Empty log message not allowed. Commit aborted! You must input some comments for your commit  1>&2
exit 1
注:findstr ".........."中的".........."代表的是限制的字符个数,一个”.”代表一个字符。这里限制字符数至少为10,可根据需要增减。

猜你喜欢

转载自lijun-19871023.iteye.com/blog/1768227