«

SVN多项目多级目录的配置与管理

时间:2024-2-15 15:10     作者:韩俊     分类: Linux


svn配置目标:有N个项目proj1,proj2,每个项目都需要设置一个版本库,但是所有的版本库共用一个 passwd 和 authz 文件,方便集中管理和控制。

关于在 linux 下简单配置一个SVN服务器的方法,可参照本站文章:

linux(centos)搭建SVN服务器

1.建立svn库根目录

mkdir /data/svn

2.建立项目的目录和其下面子项目的库

cd /data/svn
mkdir {proj1,proj2}
svnadmin create /data/svn/proj1/
svnadmin create /data/svn/proj2/

3.建立统一的passwd和authz文件(目前在svn根目录/data/svn下,一会儿svn启动就使用这个目录)

mkdir /data/svn/conf
cd /data/svn/conf
touch {passwd,authz}

4.配置passwd和authz

vi passwd 输入如下内容:

[users]
user1=pwd1
user2=pwd2
user3=pwd3
user4=pwd4
user5=pwd5

保存退出(格式是 用户名=密码,不需要在系统设立相应帐号,密码是明文,注意安全)

vi authz 输入如下内容:

[groups]
admin=user1,user2
proj1=user3,user4
proj2=user5,user3
[/]
*=
@admin=rw
[proj1:/]
@proj1=rw
[proj2:/]
@proj2=rw

保存退出(这样,匿名用户*不允许读写,admin组里的可以读写任意项目,user3,user4可以读写proj1,user3,user5可以读写proj2,可以按照项目实际情况在这个文件里分配读写权限,也可以直接使用用户名分配权限而不一定需要使用组)

5.配置每个子项目的svnserve.conf文件

分别进入到 proj1 和 proj2 下的 conf 目录里,按如下设置,这里以进入 proj1 的设置为例:

vi svnserve.conf

输入如下内容或者取消如下内容前面的注释:

anon-access = none #匿名用户不可读
auth-access = write #授权用户可写
password-db = ../../conf/passwd #使用哪个文件作为账号文件
authz-db = ../../conf/authz #使用哪个文件作为权限文件
realm = proj1 #注意在 proj2 项目中这里需要设置为 proj2

6.启动SVN服务

一般使用 svnserve -d -r /data/svn

复杂的启动方法和命令参数解释

su - svn -c "svnserve -d --listen-port 9999 -r /data/svn"

#检查是否启动:

ps -ef|grep svn

#如果显示如下,即为启动成功,例如:

svn 6941 1 0 15:07 ? 00:00:00 svnserve -d –listen-port 9999 -r /data/svn

额外说明:

su - svn 表示以用户svn的身份启动svn

-d 表示以daemon方式(后台运行)运行

–listen-port 9999 表示使用9999端口,可以换成你需要的端口。但注意,使用1024以下的端口需要root权限

-r /data/svn 指定SVN服务的目录,这里是/data/svn

7.使用版本库

在客户端使用 

svn://ip/proj1/ 

即可访问 proj1 的目录,若启动时设置了端口号,则需要使用 

svn://ip:port/proj1/

8.版本库测试和防火墙设置

服务测试方法 1:

cd /tmp
mkdir /tmp/test
touch test.txt
svn import /tmp/test/ /data/svn/proj1 -m "this is thie first import"
mkdir -p /tmp/test2
cd /tmp/test2
svn co /data/svn/proj1 /tmp/test2/

#或者:

svn co svn://{your-server-ip}:9999/proj1

#这时应该可以看到文件test.txt.

服务测试方法 2:

telnet {your-server-ip} 9999 检查端口是不是通的

如果telnet 检查不通,有可能是防火墙(iptables)里面端口没开:

vi /etc/sysconfig/iptables

-A RH-Firewall-1-INPUT -p tcp --dport 9999 -j ACCEPT

#保存完成,重启 iptables

/etc/init.d/iptables restart

#或

service iptables restart

标签: linux

热门推荐