linux(centos)搭建SVN服务器

安装步骤如下:

1、yum install subversion

 
2、输入rpm -ql subversion查看安装位置,如下图:
 linux(centos)搭建SVN服务器 - 小木 - 青番茄乐园
我们知道svn在bin目录下生成了几个二进制文件。
输入 svn --help可以查看svn的使用方法,如下图。
linux(centos)搭建SVN服务器 - 小木 - 青番茄乐园
 
 
3、创建svn版本库目录
mkdir -p /var/svn/svnrepos
 
4、创建版本库
svnadmin create /var/svn/svnrepos
执行了这个命令之后会在/var/svn/svnrepos目录下生成如下这些文件
linux(centos)搭建SVN服务器 - 小木 - 青番茄乐园
 
5、进入conf目录(该svn版本库配置文件)
authz文件是权限控制文件
passwd是帐号密码文件
svnserve.conf SVN服务配置文件
 
6、设置帐号密码
vi passwd
在[users]块中添加用户和密码,格式:帐号=密码,如dan=dan
 
7、设置权限
vi authz
在末尾添加如下代码:
[/]
dan=rw
w=r
意思是版本库的根目录dan对其有读写权限,w只有读权限。
 
8、修改svnserve.conf文件
vi svnserve.conf
打开下面的几个注释:
anon-access = read #匿名用户可读
auth-access = write #授权用户可写
password-db = passwd #使用哪个文件作为账号文件
authz-db = authz #使用哪个文件作为权限文件
realm = /var/svn/svnrepos # 认证空间名,版本库所在目录
 
9、启动svn版本库
svnserve -d -r /var/svn/svnrepos
10、在windows上测试
新建一个测试文件夹,在该文件夹下右键选择 SVN checkout如下图(要事先安装TortoiseSVN):
linux(centos)搭建SVN服务器 - 小木 - 青番茄乐园
填写SVN的地址,如下图:
 
linux(centos)搭建SVN服务器 - 小木 - 青番茄乐园
输入密码,如下图:
 
linux(centos)搭建SVN服务器 - 小木 - 青番茄乐园
 
-----------------------------------------------------------------------------华丽的分割线-------------------------------------------------------------
 

Subversion的权限设置功能为代码的安全访问提供了可靠的保障,通过设置不同的用户权限和组权限,各种角色分工明确,在共享代码的同时保证代码不受破坏。
    在建立多个版本库时,每个版本库都有自己的配置文件,可以单独配置用户权限和组权限。为简单起见,将所有版本库都指向同一个配置文件,在这个配置文件中统一进行配置。
1.指定根目录
    首先要指定一个根目录,假设为C:VersionLib,所有的版本库都存在这个根目录之下。然后启动svnserve服务,具体步骤见我的上一篇文章《Subversion安装配置指南》,需要注意的是启动目录为C:VersionLib,即指向根目录,不指向任何特定的版本库。
2.建立版本库
    在C:VersionLib中建立子目录,如prj1、prj2,子目录里还可以建立子目录,如在prj2中建立shanghai、xian,目录结构如下:
     VersionLib
           -prj1
           -prj2
                 -shanghai
                 -xian
    然后在prj1、shanghai、xian中分别建立三个版本库,并把passwd、authz文件复制一份到VersionLib目录中,以便统一配置
3.配置版本库
(1)修改3个版本库的svnserve.conf文件
    把授权权限打开:
         anon-access = none
         auth-access = write
    在prj1版本库中修改svnserve.conf:(指向根目录)
         password-db = ....passwd
         authz-db = ....authz
    在其他两个版本库中修改svnserve.conf:(指向根目录)
         password-db = ......passwd
         authz-db = ......authz
(2)修改根目录中的passwd文件
    在passwd文件中创建用户和密码:
      [users]
      qianxin = qx
      yiyu = yy
      gongyu = gy
      zhaoming = zm
      dai = dai
      yinjun = yj
      wangying = wy
    一共创建了7个用户
(3)修改根目录中的authz文件
    在authz中设置权限:
     [groups] #分组
     prj1_group = dai,gongyu,wangying
     prj2_sh_group = zhaoming,yinjun
     prj2_xa_group = qianxin,yiyu

     [/]  #根目录,即所有的版本库(包括prj1、prj2)
     qianxin = rw #管理员
 
     [prj1:/] #prj1项目
     qianxin = rw  #由于指定了"* = r",覆盖了父目录权限的继承,因此需要另外指定管理员对该版本库的访问权限
     @prj1_group = rw #组权限,前面必须加@
     * = r   #除了prj1_group组以外所有人的权限

     [prj2/shanghai:/] #prj2中的shanghai项目
     qianxin = rw #同上
     @prj2_sh_group = rw 
     * =    #除了prj2_sh_group组以外所有人都无法访问该版本库

     [prj2/xian:/] #prj2中的xian项目
     prj2_xa_group = rw 
    注意点:
    子目录继承父目录的访问权限,如果指定了管理员对根目录具有读写权限,则管理员对子目录也具有读写权限。
    但是,如果在子目录中设置* = 来割断对父目录权限的继承,则子目录中必须设置管理员权限为rw,下面这种设置是有问题的:
    [arm:/]
    qianxin = rw

    [arm:/diary/shanghai]
    dai = rw
    gongyu = rw
    * =
    由于管理员qianxin对/diary/shanghai没有任何权限,因此就无法进行导入(导入要求对所有目录都有写的权限)。正确的做法是在子目录的权限配置中也加上“qianxin = rw”。
4.访问版本库
通过以下URL访问各版本库(导入、导出):
     svn://localhost/prj1
     svn://localhost/prj2/shanghai
     svn://localhost/prj2/xian

原文地址:https://www.cnblogs.com/xianlg/p/4642240.html