freeBSD创建svn仓库
1:创建仓库
svnadmin create /home/svn/reins(reins为我的代码仓库)
同时修改权限 chown -R svn:svn /home/svn/reins
2: 修改配置文件,svn的配置文件在/home/svn/reins/conf/下,三个配置文件分别为:passwd authz svnserve.conf
下面分别记述三个配置文件:
(1). passwd:(添加项目开发中的组和用户,看着本来的例子写就可以了)
[users]
p1_admin1 = p1_admin1
p1_d1 = p1_d1
(2).authz (这个文件中配置每个组或用户的读写权限,一定要小心,看着原来的例子写,一不小心就给你来个授权失败,尤其是那个路径[reins:/],我就在这里栽倒的!)
配置authz时,注意svnserve启动参数-r所指定的目录。
这里有两种情况:
A:-r直接指定到版本库(称之为单库svnserve方式)
比如,有一个库project1,位于D:\svn\project1
使用以下命令启动svnserve
svnserve -d -r D:\svn\project1
在这种情况下,一个svnserve只能为一个版本库工作.authz文件如果配置成下面这样就是错的,
[groups]
admin=user1
dev=user2
[project1:/]
@admin=rw
@doc=r
应该配置成
[groups]
admin=user1
dev=user2
[/]
@admin=rw
@doc=r
因为[project1:/]表示库project1的根目录,而按上面的启动参数,是没有库的概念的。
使用类似这样的URL:svn://192.168.0.1/ 即可访问project1
B:-r指定到版本库的上级目录(称之为多库svnserve方式)
同样,有一个库project1,位于D:\svn\project1
如果使用以下命令启动svnserve
svnserve -d -r D:\svn
这种情况,一个svnserve可以为多个版本库工作,这时如果想限制指定库的指定目录,就应该指定具体的库,像这样
[groups]
admin=user1
dev=user2
[project1:/]
@admin=rw
@doc=r
如果此时你还用[/],则表示所有库的根目录,同理,[/src]表示所有库的根目录下的src目录,使用类似这样的URL:svn://192.168.0.1/project1 即可访问project1
这样的URL:svn://192.168.0.1/project2 即可访问project2
(3).svnserver.conf(注意没一行去掉#号后要顶格写,听别人说否则会报错,我没有试过)
#去掉#[general]前面的#号
[general]
#匿名访问的权限,可以是read,write,none,默认为read
anon-access = none
#认证用户的权限,可以是read,write,none,默认为write
auth-access = write
#密码数据库的路径,去掉前面的#
password-db = passwd
#认证用户的权限定义文件
authz-db = authz
3:启动svnserver服务
svnserver -d -r /home/svn/
如果提示已经有一个svnserver进程,可以用命令killall svnserver 来关闭该进程。
4.现在就可以在客户端用TortoiseSVN来checkout了
svn://172.31.12.38/reins