Ubuntu下搭建SVN服务器
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ubuntu下搭建SVN服务器相关的知识,希望对你有一定的参考价值。
SVN的介绍
SVN
是Subversion
的简称,是一个开放源代码的版本控制系统,相较于RCS
、CVS
,它采用了分支管理系统,它的设计目标就是取代CVS
。互联网上很多版本控制服务已从CVS
迁移到Subversion
。
Ubuntu
下安装SVN
及配置
- 安装
SVN
sudo apt-get install subversion
- 建立
svn
仓库
1). 建立svn
目录:mkdir /home/.svn
(使用隐藏目录)
2). cd /home/.svn
3). mkdir oneTOinf
4). 创建仓库oneTOinf
:svnadmin create /home/.svn/oneTOinf
,执行完毕后oneTOinf
目录有svnadmin
创建的目录和文件
5). mkdir test
6). 创建仓库test
:svnadmin create /home/.svn/test
,执行完毕后test目录有svnadmin
创建的目录和文件
- 配置和管理
svn
执行之后 oneTOinf/conf
下文件结构如下:
? at [10/02/17][11:40:17]
? ? tree oneTOinf/conf
oneTOinf/conf
├── authz
├── hooks-env.tmpl
├── passwd
└── svnserve.conf
可以看到在当前目录下有着svn
的三个配置文件。
1). vi svnserve.conf
,配置项在[general]
下:
anon-access
:匿名用户的权限,可以为read
,write
和none
,默认值read
。
- 不允许匿名用户访问:
anon-access = none
auth-access
:认证用户的权限,可以为read
,write
和none
,默认值write
。password-db
:密码数据库的路径authz-db
:认证规则库的路径
注意:这些配置项的行都要顶格,否则会报错。修改配置后需要重启svn
才能生效。
2).vim passwd
这是每个用户的密码文件,比较简单,就是“用户名=密码”,采用的是明码。如allen=111111
3). vim authz
[groups] section
:为了便于管理,可以将一些用户放到一个组里边,比如:owner=allen,ellen
groups
下边的sections
表示对一个目录的认证规则,比如对根目录的认证规则的section为[/]
。设置单用户的认证规则时一个用户一行,如:
[/]
allen=rw #allen对根目录的权限为rw
ellen=r #ellen对根目录的权限为r
如果使用group
,需要在group
名字前加@
,如
@owner=rw #group owner中的用户均为rw,等价于上边的两句话
启动时如果从/home/.svn/oneTOinf
启动,/
就是oneTOinf
目录,用如上方式以oneTOinf
目录为根设置权限。
如果从/home/.svn/
启动,每个仓库根还是自己的起始目录。可以采用如上方式设置oneTOinf
的权限,也可以采用如下方式:
[oneTOinf:/]
@owner=rw
设置test的权限如下:
[test:/]
@harry_and_sally = rw
简言之,每个仓库的根目录(/)
就是自己的起始目录;[repos:/]
这种方式只适用于多仓库的情况;[/]
适合于单仓库和单仓库的方式。
- 不能跨越仓库设置权限。就是不能在
oneTOinf
仓库的配置项中配置test
仓库 - 具体的配置展示:
svnserve.conf
[general]
#匿名用户不可读
anon-access = none
#权限用户可写
auth-access = write
#密码文件为passwd
password-db = passwd
#权限文件为authz
authz-db = authz
# 编辑authz制定管理员组即admin组的用户为oneTOinf admin组有rw(读写权限) 所有人有r(读权限)
[groups]
admin= oneTOinf
[oneTOinf:/]
@admin =rw
*=r
# 编制passwd 文件 设定用户密码
[users]
oneTOinf=oneTOinf
- 启动和停止
svn
1). 启动:
从
oneTOinf
目录启动,svnserve -d -r /home/.svn/oneTOinf
,根目录
(/)
是oneTOinf
,authz
中规则的配置使用section[/]
。访问方式为:
svn://192.168.0.87/
从
.svn
目录启动,svnserve -d -r /home/.svn
,根目录
(/)
是.svn
,authz
中对oneTOinf
的配置使用[oneTOinf:/]
,? 对
test
的配置使用[test:/]
。访问方式为:
svn://192.18.0.87/oneTOinf
svn://192.18.0.87/test
- 如果需要
svn
自启动,把命令加入/etc/rc.local
中2). 检查
svn
服务器是否已经启动(svn
默认使用3690端口):netstat -an | grep 3690
3). 停止:
killall svnserve
测试如下:
? at [10/02/17][12:24:07]
? ? svnserve -d -r /home/.svn
? at [10/02/17][12:24:38]
? ? netstat -an | grep 3690
tcp 0 0 0.0.0.0:3690 0.0.0.0:* LISTEN
unix 3 [ ] STREAM CONNECTED 36909
? at [10/02/17][12:25:02]
? ?
在windows客户端下进行测试:
以上是关于Ubuntu下搭建SVN服务器的主要内容,如果未能解决你的问题,请参考以下文章