SVN使用方法记录

SVN(Subversion)是一个开源版本控制系统,文件必须提交到svn服务器来集中管理版本信息。支持分支管理。svn服务器有两种运行方式:独立服务器(svn协议)和借助apache运行(http协议)。svn存储版本数据也有两种方式:BDB(一种事务安全型表类型)和FSFS(一种不需要数据库的存储系统),默认FSFS。BDB方式在服务器中断时,有可能锁住数据。

安装

yum install -y svbversion

服务端

首先,创建repository根目录并启动serve

# 创建根目录
mkdir -p /data/svn/repository
# 启动svn服务端
svnserve -d -r /data/svn/repository
# 也可指定端口号启动svn服务端
#svnserve -d -r /data/svn/repository --listen-port 3690

然后,创建一个版本库repository,名为pj_config

# 创建一个版本库
svnadmin create /data/svn/repository/pj_config
# 也可指定文件存储类型创建
#svnadmin create --fs-type fsfs /data/svn/repository/pj_config

初始化的版本库pj_config目录内容如下图,

svn-001

其中conf/svnserve.conf文件是该版本库的服务配置文件,修改需要重启svn服务生效。编辑内容如下,

# 禁止匿名访问
anon-access = none
# 认证后最高具有写权限
auth-access = write
# 指定账户密码文件,这里是相对路径,也可以使用绝对路径
password-db = passwd
# 指定权限认证文件
authz-db = authz

passwd文件用于设置账户的用户名和密码,一行一账户,格式为:用户名 = 密码。修改即时生效。编辑内容如下,

[users]
joe = joe123
wanghengbin = 1
xjp = abc

authz文件用于设置用户权限,修改即时生效。编辑内容如下,

# 账户分组,人多时用,然后把权限控制在组上
[groups]
beijing = wanghengbin, xjp
london = joe

# 以下是该版本库目录或子目录的账户权限设置,对组设置需要在组名前加@
#[pj_config:/foo]
#@beijing = rw
# * = r

[/]
wanghengbin = rw
* =

客户端

svn checkout svn://172.30.8.221:3690/pj_config
svn add somefile
svn delete somefile
svn commit -m "commit note"

支持HTTP协议访问svn服务端

前面的客户端访问方式是通过svn协议的URL,端口是svn服务器启动时设置的端口3690。如果想通过http协议访问,需要借助于apache及其相应的svn支持模块来实现。

首先安装apache和svn支持模块,

yum install -y httpd
yum install -y mod_dav_svn

然后增加svn相关配置文件/etc/httpd/conf.d/subversion.conf,内容如下,

LoadModule dav_svn_module     modules/mod_dav_svn.so
LoadModule authz_svn_module   modules/mod_authz_svn.so

<Location /repos/pj_config>
   DAV svn
   SVNPath /data/svn/repository/pj_config

   AuthType Basic
   AuthName "Authorization Realm"
   AuthUserFile /data/svn/repository/pj_config/conf/passwd_http
   AuthzSVNAccessFile /data/svn/repository/pj_config/conf/authz
   Require valid-user
</Location>

其中版本库目录(SVNPath)使用之前创建的那个,注意系统用户apache需要对其拥有读写权限,也可直接chown拥有者为apache。账户权限文件不变(AuthzSVNAccessFile),仍然是authz。账户密码文件(AuthUserFile)需要通过htpasswd命令创建,如下,

# 添加账户,之后输入密码
htpasswd /data/svn/repository/pj_config/conf/passwd_http wanghengbin

客户端访问,

svn checkout http://172.30.8.221/repos/pj_config
svn co http://172.30.8.221/repos/pj_config --username wanghengbin --password whb001 --no-auth-cache
Creative Commons License

本文基于署名-非商业性使用-相同方式共享 4.0许可协议发布,欢迎转载、使用、重新发布,但请保留文章署名wanghengbin(包含链接:https://wanghengbin.com),不得用于商业目的,基于本文修改后的作品请以相同的许可发布。

发表评论