团队新成立,代码是老的,迭代了很多版本(几百个G),老的svn服务器废了,准备重新搭建代码管理服务,先用的gitlab(没有自己搭建过),发现子项目需要先建立再引用到主项目中,这么老的代码谁知道哪个目录是子项目,就想着先把代码上传,再一点点的根据目录区分权限,果断放弃gitlab。
gitlab相较于svn,优势明显,svn还存在的意义可能就是老项目,目录结构非常复杂,又需要精细化的权限控制。
####################安装####################
安装svn(如果系统自带,也建议重新安装,否则可能没有svnserve.service服务)
yum install subversion -y
查看svn安装位置
rpm -ql subversion
查看svn版本号
svnserve --version
建立svn根文件夹
mkdir -p /home/svn/
启动svn服务指定服务的SVN根文件夹
svnserve -d -r /home/svn/
建立版本号库(abc项目,也可以是def项目等)
svnadmin create /home/svn/abc
查看 SVN 进程:
ps -ef | grep svn | grep -v grep
检測 svn port:
netstat -ln | grep 3690
####################svn基础配置####################
vim /home/svn/abc/conf/svnserve.conf 将下面内容前的‘#’和空格 所有去掉。并改动内容
=================================================
anon-access = none # 禁止匿名用户访问
auth-access = write # 授权用户拥有读写权限
password-db = passwd # 指定用户密码的文件(可以写绝对路径)
authz-db = authz # 指定权限配置的文件(可以写绝对路径)
realm = /home/svn # 指定认证域(项目所在地)
=================================================
注: svnserve.conf 中每一个參数都要顶格写,开头不能有空格。
####################用户权限配置####################
用户权限配置,默认使用/home/svn/abc/conf/authz文件
测试环境目录结构
abc
trunk
Client (user1有权限)
SDK (user1,user2有权限)
Service (user3有权限)
branch
建议使用群组
[groups]
# harry_and_sally = harry,sally
# harry_sally_and_joe = harry,sally,&joe
group_admin = admin
group_client = user1
group_sdk = user2,user1
group_service = user3
根据目录划分权限
[/]
@group_admin = rw #读写权限
#下面如果不将所有群组都写上只读权限,下载文件完成后会有报错(Not authorized to open root of edit operation,不影响使用),但是比较麻烦的是,根目录所有群组都有只读权限后,子目录需要把没有权限的群组设置成"无权限",否则用户能看到全部文件。大家自己权衡利弊吧。
@group_client = r #只读权限
@group_service = r
@group_sdk = r
[pvg:/trunk/Client]
@group_client = rw
@group_service = #无权限
@group_sdk =
[pvg:/trunk/Service]
@group_service = rw
@group_client =
@group_sdk =
[pvg:/trunk/SDK]
@group_sdk = rw
@group_service =
@group_client =
####################用户密码####################
用户密码设置,默认使用/home/svn/abc/conf/passwd文件
[users]
# harry = harryssecret
# sally = sallyssecret
admin = 123456
user1 = 123456
user2 = 123456
user3 = 123456
####################SVN配置开启自启动服务####################
配置开启自启动
#vi /etc/sysconfig/svnserve
将 OPTIONS="-r /home/svn" 改为 svn 版本库存放的目录
设置svn服务为自启动服务
systemctl enable svnserve.service
手动启动、关闭服务
systemctl start svnserve.service
systemctl stop svnserve.service