SVN 服务器搭建实践
本着爱折腾的精神,搭建了 svn
服务器。
什么是 svn?
Apache Subversion(简称 SVN,svn),一个开放源代码的版本控制系统,相较于 RCS、CVS,它采用了分支管理系统,它的设计目标就是取代 CVS。互联网上很多版本控制服务已从 CVS 转移到 Subversion。 ---维基百科
搭建环境
aliyun:CentOS Linux release 7.3.1611 (Core) 注意:需要在阿里云控制面板安全组管理中开启 svn 默认端口 3690 的访问权限。
详细过程
安装 svn
使用 yum 安装
yum -y install subversion
检查版本
svn --version
设置开机启动
systemctl enable svnserve.service
或 systemctl enable svnserve
配置 svn
配置 svn 目录
mkdir /home/svn
这里我把它放在 /home/svn
目录下。
新建版本仓库
svnadmin create /home/svn/project
仓库下文件目录简介
conf
存放版本库的配置文件,包括authz
,passwd
,svnserve.conf
db
存放着Subversion
所要管理的所有受版本控制的数据,不同的存储方式(Berkeley DB
或者FSFS
)下有着不同的目录结构,不过我们一般不用直接修改和查看这个目录下的内容,Subversion
的命令可以安全的操作这个目录。hooks
存放着钩子脚本及其模版(一种版本库事件触发程序)。locks
存放着Subversion
版本库锁定数据。format
记录了版本库的布局版本号。README.txt
这个就不多说了,自行阅读。
配置用户名密码
passwd
用户名和密码
非常简单,使用 username
= passwd
格式就可以了。
配置权限
authz
资源访问权限
该配置文件由一个 [groups]
配置段和若干个版本库路径权限段组成。
[groups]
配置段中配置行格式如下:
<用户组>
= <用户列表>
用户列表由若干个用户组或用户名构成,用户组或用户名之间用逗号 ","
分隔,引用用户组时要使用前缀 "@"
(如:引用用户组 "all"
要使用字符串 "@all"
)。
版本库路径权限段的段名格式如下:
[<版本库名>:<路径>]
如版本库 abc 路径/tmp 的版本库路径权限段的段名为 "[abc:/tmp]"
。
可省略段名中的版本库名。若省略版本库名,则该版本库路径权限段对所有版本库中相同路径的访问控制都有效。
如:段名为 "[/tmp]"
的版本库路径权限段设置了所有引用该权限配置文件的版本库中目录 "/tmp"
的访问权限。
版本库路径权限段中配置行格式有如下三种:
<用户名>
= <权限>
<用户组>
= <权限>
"*"
= <权限>
其中,"*"
表示任何用户;权限的取值范围为 ''
、'r'
和 'rw'
,''
表示对该版本库路径无任何权限,'r'
表示具有只读权限,'rw'
表示有读写权限。
注意:每行配置只能配置单个用户或用户组。
示例配置:
[groups]
g_admin = admin,thinker
[admintools:/]
@g_admin = rw
* =
[test:/home/thinker]
thinker = rw
* = r
在上述配置文件中,定义了一个用户组 "g_admin"
,该用户组包含用户 "admin"
和 "thinker"
。然后定义了 2 个版本库路径权限段。 其中,版本库 "admintools"
只有用户组 "g_admin"
可读写,其他用户无任何权限;版本库 "test"
中路径 "/home /thinker"
只有用户 "thinker"
有读写权限,其他用户只有可读权限。
配置 svnserve
svnserve.conf
服务器配置
主要配置:
-
anon-access
控制非鉴权用户访问版本库的权限。取值范围为"write"
、"read"
和"none"
。
即"write"
为可读可写,"read"
为只读,"none"
表示无访问权限。
缺省值:read
,这里设置为none
-
auth-access
控制鉴权用户访问版本库的权限。取值范围为"write"
、"read"
和"none"
。
即"write"
为可读可写,"read"
为只读,"none"
表示无访问权限。
缺省值:write 这里设置为write
-
password-db
指定用户名口令文件名。除非指定绝对路径,否则文件位置为相对conf
目录的相对路径。
缺省值:passwd
这里设置为passwd
-
authz-db
指定权限配置文件名,通过该文件可以实现以路径为基础的访问控制。
除非指定绝对路径,否则文件位置为相对conf
目录的相对路径。
缺省值:authz
这里设置为authz
-
realm
指定版本库的认证域,即在登录时提示的认证域名称。若两个版本库的
认证域相同,建议使用相同的用户名口令数据文件。
缺省值:一个UUID
(Universal Unique IDentifier
,全局唯一标示)。
这里建议设置为版本库名称
启动 svn
vi /etc/sysconfig/svnserve
将 OPTIONS
改为 "-r /home/svn"
,即 svn仓库根目录
。
而后 systemctl start svnserve
或 service svnserve start
使用 systemctl status svnserve.service
查看服务启动状态。
使用 service svnserve stop
停止服务或者使用 ps aux|grep svnserve
后,kill
掉进程。
使用 service svnserve restart
重启服务。
使用客户端连接
windows
下载TortoiseSVN
mac os
下载Cornstone
然后 svn checkout
svn 的存储特性简介
特性 | Berkeley DB | FSFS |
---|---|---|
对操作中断的敏感 | 很敏感;系统崩溃或者权限问题会导致数据库“塞住”,需要定期进行恢复。 | 不敏感 |
可只读加载 | 不能 | 可以 |
存储平台无关 | 不能 | 可以 |
可从网络文件系统访问 | 不能 | 可以 |
版本库大小 | 稍大 | 稍小 |
扩展性:修订版本树数量 | 无限制 | 某些本地文件系统在处理单一目录包含上千个条目时会出现问题。 |
扩展性:文件较多的目录 | 较慢 | 较慢 |
检出最新代码的速度 | 较快 | 可以 |
大量提交的速度 | 较慢,但时间被分配在整个提交操作中 | 较快,但最后较长的延时可能会导致客户端操作超时 |
组访问权处理 | 对于用户的 umask 设置十分敏感,最好只由一个用户访问。 | 对 umask 设置不敏感 |
功能成熟时间 | 2001 年 | 2004 年 |
总结
svn 管理员可以通过这 3 个配置文件设置 svnserve 服务的用户名口令,以及对版本库路径的访问权限。这些配置文件保存后就立即生效,不需要重启 svnserve 服务。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于