Ubuntu下搭建SVN服务器

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ubuntu下搭建SVN服务器相关的知识,希望对你有一定的参考价值。

SVN的介绍

SVNSubversion的简称,是一个开放源代码的版本控制系统,相较于RCSCVS,它采用了分支管理系统,它的设计目标就是取代CVS。互联网上很多版本控制服务已从CVS迁移到Subversion

Ubuntu下安装SVN及配置

  1. 安装SVN

  sudo apt-get install subversion

  1. 建立svn仓库

  1). 建立svn目录:mkdir /home/.svn(使用隐藏目录)

  2). cd /home/.svn

  3). mkdir oneTOinf

  4). 创建仓库oneTOinfsvnadmin create /home/.svn/oneTOinf,执行完毕后oneTOinf目录有svnadmin创建的目录和文件

  5). mkdir test

  6). 创建仓库testsvnadmin create /home/.svn/test,执行完毕后test目录有svnadmin创建的目录和文件

  1. 配置和管理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:匿名用户的权限,可以为readwritenone,默认值read
    • 不允许匿名用户访问:anon-access = none
  • auth-access:认证用户的权限,可以为readwritenone,默认值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). 启动:

  1. oneTOinf目录启动,svnserve -d -r /home/.svn/oneTOinf

    根目录(/)oneTOinfauthz中规则的配置使用section[/]

    访问方式为:svn://192.168.0.87/

  2. .svn目录启动,svnserve -d -r /home/.svn

    根目录(/).svnauthz中对oneTOinf的配置使用[oneTOinf:/],

    ? 对test的配置使用[test:/]

    访问方式为:

      svn://192.18.0.87/oneTOinf

      svn://192.18.0.87/test

  1. 如果需要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服务器的主要内容,如果未能解决你的问题,请参考以下文章

Linux开发环境下搭建SVN

ubuntu下 SVN 服务器搭建及使用

Ubuntu下Apache+SVN搭建SVN服务多项目管理

Ubuntu系统搭建SVN服务器

Ubuntu Server搭建svn服务以及迁移方法转

ubuntu下搭建svn环境及其使用