分类: 系统运维
2014-05-30 15:53:09
使用svn进行多个版本库的linux教程如下:
如果当前有svnserve进程在运行,指令
1
|
killall svnserve
|
指定某目录为svn服务启动时所使用的根目录,指令
1
|
cd /data
|
1
|
mkdir svn
|
最后的路径为:/data/svn
接着创建多个svn版本库于/data/svn/目录下,指令
1
|
svnadmin create /data/svn/lesterlee1
|
1
|
svnadmin create /data/svn/lesterlee2
|
最后的目录结构应为这样:
/data/svn
/data/svn/lesterlee1
/data/svn/lesterlee2
将/data/svn/lesterlee1/conf/目录下的authz、passwd、svnserve.con拷贝至/data/svn/目录下,指令
1
|
cd /data/svn/lesterlee1/conf
|
1
|
cp ./authz ../../
|
1
|
cp ./passwd ../../
|
1
|
cp ./svnserve.conf
|
此时svn根目录的结构应为:
/data/svn
/data/svn/lesterlee1
/data/svn/lesterlee2
/data/svn/authz
/data/svn/passwd
/data/svn/svnserve.conf
下一步,配置svnserve.conf,指令
1
|
cd /data/svn
|
1
|
vi svnserve.conf
|
加入以下内容:
1
|
anon-access = none
|
1
|
auth-access = write
|
1
|
password-db = passwd
|
1
|
authz-db = authz
|
1
|
realm = svn
|
保存后,至此,svnserve.conf配置完毕,接下来配置用户信息
1
|
vi passwd
|
配置信息如下:
1
|
[users]
|
1
|
lesterlee = password
|
保存后,至此,passwd配置完毕,接下来配置用户权限
1
|
vi authz
|
配置的信息如下:
1
|
[groups]
|
#用户组
1
|
grouplesterlee= lesterlee
|
#将用户lesterlee加入用户组grouplesterlee中
1
|
[/]
|
1
|
lesterlee= rw
|
#读写权限
1
|
@grouplesterlee= rw
|
用户组读写权限
最后,启动svn服务即可,指令
1
|
svnserve -d -r /data/svn --config-file=/data/svn/svnserve.conf
|
注:后面的参数,–config-file=/data/svn/svnserve.conf是告诉svn服务,调用/data/svn目录下的svn配置文件,用来统一管理/data/svn目录下创建的子svn版本,统一使用配置文件中的用户信息、权限信息来管理各版本库。
注:
通常启动SVN服务,仅指定SVN版本库的根目录,如下:
svnserve -d -r /data/svn
然后在/data/svn下创建多个版本库:
cd /data/svn
svnadmin create lesterlee1
svnadmin create lesterlee2
再依次配置lesterlee1和lesterlee2等版本库下的conf/svnserve.conf、conf/passwd、conf/authz文件。
问题便来了,因为大多数的时候,同一个用户需要用相同的帐号和密码去访问不同的版本库,这时的权限配置就不好处理了,以前看其他人的解决方法是在svnserve.conf中指定passwd和authz的路径时用相对路径指到同一个文件。这是一个可行的方法,但新增版本库的时候,就得更改svnserve.conf文件,不方便。
仔细看svnserve的帮助信息,大家都会发现有一个--config-file参数,这个参数就是用来指定svnserve.conf路径的,说到这,问题已经明了,只要在启动SVN服务的时候,指定--config-file参数,只要指定了此参数,所有的权限都由参数指定的svnserve.conf控制,而每个版本库conf目录下的svnserve.conf的配置都会忽略掉。
svnserve -d -r /data/svn --config-file /data/svn/svnserve.conf