接上一篇

1. 进入 SVN 的 hooks 目录

cd /home/svn/node/hooks

2. 新建post-commit文件

3. 输入以下内容

#!/bin/sh
REPOS=$1
REV=$2
time=`date "+%Y-%m-%d %H:%M:%S"`
export LANG=C.UTF-8

# 当用户提交的时候注释里包含 auto_deploy 字符串的时候才发布到 web 目录
if (/usr/local/svn/bin/svnlook log -r $REV /home/svn/node/ | grep "auto_deploy")
then
echo "start deploy $time" >> /tmp/svn_autocommit.log
/usr/local/svn/bin/svn export --username yimity --password ******* "svn://127.0.0.1" /home/wwwroot/ajax --force --no-auth-cache
fi

为了不使每次提交之后都发布,所以判断下 只有在提交的注释中包含 auto_deploy 时,才发布。
注意其中的 /usr/local/svn/bin/ 和 /home/svn/node/ 以及 /home/wwwroot/ajax 这三个路径,第一个是安装 svn 的路径,上一篇有讲,第二个是 svn 的版本库目录,第三个是网站服务器目录,至于 svn://127.0.0.1 这个则是 svn 的访问目录了,也可以是外部地址,即:工作电脑获取的地址。
注意 export LANG=C.UTF-8 请看问题 2 字符集。

4. 修改权限

chmod +x post-commit

保存,在本地修改保存提交试试看。

出现错误:
1. Store password unencrypted
进入

vi /home/root/.subversion/servers

将所有的

# store-plaintext-passwords = no

改成

# store-plaintext-passwords = yes

即可

2. 字符集
使用

locale -a

查看系统字符集,如我的 VPS 只有

C
C.UTF-8
POSIX

所以设置成 zh_CN.UTF-8 就会出错

然后设置 3 中的

export LANG=C.UTF-8

修改为

export LANG=系统列出来的字符集的名字

3. 权限
如果新建了不同的组和用户(非 root),权限问题的话,肯定应该会有,比较复杂,这里不多说了。

参考:http://blog.51yip.com/server/901.html 以及 http://www.wp1998.net/2012/834.html