Linux下SVN服务器搭建

本文详细介绍了SVN独立服务器的安装过程,包括利用yum安装、测试、建立版本库、配置svn配置文件以及启动服务器的方法。同时,提供了一个用于管理服务器启动、重启、停止的脚本实例。此外,解决了一个常见问题:当使用特定目录权限配置时出现的访问错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SVN( Subversion)是近年来崛起的版本 管理工具,是 CVS的接班人。目前,绝大多数 开源软件都使用svn作为代码版本管理软件。svn 服务器有2种运行方式:独立服务器和借助 ApacheWeb服务器。两种方式各有利弊。svn存储版本数据也有2种方式:BDB和FSFS。因为BDB方式在服务器中断时,有可能锁住数据,所以还是FSFS方式更安全一点。

本文主要介绍SVN独立服务器的的安装和简单配置:

安装(CentOS下yum即可方便的完成安装)
# yum install subversion
测试安装是否成功:
# svnserve --version      回车显示版本说明安装成功

建立版本库
# mkdir /svndata              创建svn数据目录(目录可自行制定)
# svnadmin create /svndata/kuming                  kuming就是版本库的名字,可以改变!

配置svn配置文件(为了方便管理,这里多个库调用相同的配置文件。)

#每个版本库创建之后都会生成svnserve.conf主配文件
# vim /svndata/kuming/conf/svnserve.conf

[general]
anon-access = none
auth-access = write
password-db = /svndata/conf/passwd
authz-db = /svndata/conf/authz
realm = kuming

# mkdir /svndata/conf
# vim /svndata/conf/passwd      //svn用户配置文件

[users]
user1 = password1
user2 = password2
user3 = password3
user4 = password4

# vim /svndata/conf/authz      //svn权限控制配置文件

[groups]    #设置组
group1 = user1,user2  #多用户用逗号隔开

[/]       #根目录权限设置(就是“kuming”这个文件夹)
user3 = rw   #用户1权限是:可读写
user4 = r    #用户2权限是:可读,不可写
user =      #什么都没写代表没有任何权限

@group1 = rw  #设置组权限

[kuming:/123]  #设置根目录下“123”文件夹的权限
#说明“123”这个文件件怎么创建?这是在SVN服务器配置好之后,创建一个权限很高的用户在客户端登录SVN
#然后创建一个文件夹“123”。

启动服务器
# svnserve -d -r /svndata
-d表示以daemon方式(后台运行)运行
-r /svndata指定根目录是/svndata
关闭SVN 服务器
# killall svnserve

# ps aux | grep svnserve    查看服务,端口:3690

客户端使用的软件是TortoiseSVN
浏览方法:
打开版本库浏览器输入:svn://ip-addr/kuming/文件夹名

下面是随便折腾一个小脚本用来管理服务器的启动、重启、停止等操作
# vim svn
# chmod +x svn

#!/bin/bash
case "$1" in
start)
        svnserve -d -r /svndata
        svnport=`netstat -natp | grep svnserve | awk -F: '{print $4}' | awk 'NR==1'`
        if [ $svnport -eq 3690 ]
        then
                echo "SVN Server Already Runnning. Port:3690"
        else
                echo "SVN Server Does Not Start"
        fi
;;
reload)
        svnport=`netstat -natp | grep svnserve | awk -F: '{print $4}' | awk 'NR==1'`
        if [ $svnport -eq 3690 ]
        then
                killall svnserve && svnserve -d -r /svndata
                echo "Reload OK"
        else
                echo "SVN Server Is Not Running"
        fi
;;
stop)
        killall svnserve
        echo "SVN Server Has Been Stopped"
;;
status)
        svnport=`netstat -natp | grep svnserve | awk -F: '{print $4}' | awk 'NR==1'`
        pid=`ps aux | grep svnserve | grep -v "grep" | awk '{print $2}'`
        if [ $svnport -eq 3690 ]
        then
                echo "SVN Server (pid:$pid) 正在运行..."
        else
                echo "SVN Server 停止运行..."
        fi
;;
*)
        echo "$0: Usage: $0 {start|status|stop|reload}"
        exit 1
;;
esac

该脚本使用方法我想应该不用多说了,全文完。


Subversion装了1.5.2版,乌龟SVN装的是1.5.1版本,可以通过乌龟正常访问到版本库,但当check out时却出现了"Not authorized to open root of edit operation"错误,上网搜索了一下,提供的解决版本如下:
anon-access 属性对目录权限的影响
你想将你的代码库开放给所有人访问,于是你就开放了匿名访问权限,在 svnserve.conf 文件中添加一行:"anon-access=read"。可是对于部分目录,你又不希望别人看到,于是针对那些特别目录,你在 authz.conf 里面进行配置,添加了授权访问的人,并添加了"* ="标记。你认为一切OK了,可是你却发现,那个特别目录却无法访问了,总是提示"Not authorized to open root of edit operation"或者"未授权打开根进行编辑操作"。你再三检查你配置的用户名与密码,确认一切正确,还是无法解决问题
原来,Subversion 有个小 bug ,当"anon-access=read"并且某个目录有被设置上"* ="标记,则会出现上述问题。这个 bug 在当前最新版本上(v1.4)还存在
但我并没有设"*="这种访问方式,用户名、密码、目录访问都正确设置了。当把 anon-access=read 改成 anon-access=none 后,发现,真的可以正常访问了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值