标签归档:svn

CentOS下搭建svn服务器


1.1
 安装SVN服务器端
yum install subversion
1.2 查看是否安装成功
svnserve –version
创建SVN版本库
mkdir /opt/svn
mkdir /opt/svn/repos
svnadmin create /opt/svn/repos
3 配置SVN
创建版本库后,在/opt/svn/repos目录下会生成配置文件目录conf
cd /opt/svn/repos/conf
该目录下有 authz passwd svnserve.conf 三个配置文件
3.1 svnserve.conf文件
分别配置以下5项(顶格写,行开始处不留空格,下同。注意:要在[general]下,不是文件结尾):
anon-access = none 设置未认证用户无访问权限
auth-access = write 设置认证用户具有写权限
password-db = passwd 指定用户文件,该文件保存用户名和密码
authz-db = authz 指定权限配置文件,该文件可以细粒度的控制版本库某个文件或目录的访问
realm = /opt/svn/repos 指定版本库的认证域(认证命名空间),即在登录时提示的认证域名称
3.2 passwd文件
设置用户名和密码
realwall = 111111
3.3 authz文件

[groups]
project_p = pm
project_s = server1,server2,server3
project_c = client1,client2,client3
project_t = test1,test1,test1

[/]
realwall = rw
@project_p = rw
* =

[/server]
@project_p = rw
@project_s = rw
* =

[/client]
@project_p = rw
@project_c = rw
* =

[/doc]
@project_p = rw
@project_s = r
@project_c = r
@project_t = r
* =

说明:以上信息表示,只有project_p用户组有根目录的读写权。r表示对该目录有读权限,w表示对该目录有写权限,rw表示对该目录有读写权限。最后一行的* =表示,除了上面设置了权限的用户组之外,其他任何人都被禁止访问本目录。这个很重要,一定要加上!

配置authz时,注意svnserve启动参数-r所指定的目录,设repos1版本库路径为/opt/svn/repos1。
a.当-r直接指定某版本库(称为单库svnserve模式),即svnserve -d -r /opt/svn/repos1
这种情况下一个svnserve只能为一个版本库工作,authz配置成
[repos1:/]
user1 = rw
就是错的,而应该是
[/]
user1 = rw
使用类似这样的URL:svn://192.168.0.1/ 即可访问repos1。
b.当-r指定到版本库的上级目录(称之为多库svnserve方式),即svnserve -d -r /opt/svn
这种情况,一个svnserve可以为多个版本库工作,这时如果想限制指定库的指定目录,就应该指定具体的库,像这样
[repos1:/]
如果此时你还用[/],则表示所有库的根目录,同理,[/src]表示所有库的根目录下的src目录。
使用类似这样的URL:svn://192.168.0.1/project1 即可访问project1。
此外,对中文目录进行权限控制时,要将权限文件authz改为无BOM的utf-8格式。

停止svnserve

ps aux | grep svnserve

kill -9 pid(即正在运行的svnserve对应的pid)

参考资料
http://blog.csdn.net/tianlesoftware/article/details/6119231
http://svndoc.iusesvn.com/svnbook/1.4/svn.serverconfig.svnserve.html
authz文件权限控制 http://doc.iusesvn.com/show-8-1.html