Skip to content

如何搭建SVN

安装并创建SVN仓库

1. 安装

$ yum install -y subversion

#我用的是coentos,所以用yum安装svn

2. 创建 svn 仓库

$ mkdir -p /home/mx/blog
$ svnadmin create /home/mx/blog #生成svn架构
$ ls /home/mx/blog
conf  db  format  hooks  locks  README.txt

修改SVN重要的三个文件

其中在 conf 目录下有三个重要的配置文件

  • authz - 是权限控制文件
  • passwd - 是帐号密码文件
  • svnserve.conf - 是 SVN 服务配置文件

1. 配置svnserve.conf

文件里面有,但是被注释掉了,删掉前面的#就可以了

anon-access = none      #匿名用户没有权限,如果设置成read,客户端会不显示日志
auth-access = write     #授权用户可写
password-db = passwd    #使用哪个文件作为账号文件
authz-db = authz        #使用哪个文件作为权限文件
realm = /home/mx/blog   # 认证空间名,版本库所在目录,不修改也是可以的。

2. 配置authz

[groups] #组成员
adminUser = Admin,Guo #admin_user是组名 
user = test
[/]
@admin_user = rw #[/]表示项目根目录,前面加@表示组名,也可以单独去控制用户
# test = r
#r表示读,w表示写

3. 配置passwd

[users]
Admin = password
Guo = password
# 用户名 = 密码

配置好这三个文件就可以启动啦

$ svnserve -d -r /home/mx/blog # 启动 svn
$ killall svnserve # 关闭 svn

SVN默认监听3690端口,需要防火墙放行tcp3690

  到这里服务端就完成了版本控制的配置,如果需要将svn的文件自动导出到web目录或者是在提交前检查是否有写log,就需要去修改svn的生命钩子了

配置hooks

1. 在提交前检查是否有写log

在hooks文件夹下新建 "pre-commit"

vim hooks/pre-commit

#!/bin/sh

REPOS="$1"
TXN="$2"

# 敲which svnlook 就能看见所在路径了
SVNLOOK=/usr/bin/svnlook

LOGMSG=`$SVNLOOK log -t "$TXN" "$REPOS" | grep "[a-zA-Z0-9]" | wc -c`
if [ "$LOGMSG" -le 0 ];
then
    echo "备注信息不能为空" 1>&2
    exit 1
fi

chmod +x hooks/pre-commit
赋予权限

2. 将svn的文件自动导出到web目录

在hooks文件夹下新建 "post-commit"

vim hooks/post-commit

#!/bin/sh
# 指定编码方式
export LANG=en_US.UTF-8

# svn执行目录,一般就是这个,如果不是可以which svn 查看
SVN=/usr/bin/svn

# svn checkout下来的目录,一般来说就是你的网站根目录
WEB=/home/mx/123

# --username后面是svn账号,--password后面是svn密码
$SVN update $WEB --username Admin --password password

chmod +x hooks/post-commit
赋予权限

这里还需要将svn的数据checkout一份到网站目录

cd /usr/share/nginx/html
svn checkout svn://127.0.0.1/

按照提示输入密码就可以了
checkout这一步骤是必须的,不然是提交后是不会自动导出到网站目录的