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