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