TMDBug

Code Change The World And Make It Better!

TMD.Bug

linux下svn自动同步-hooks(钩子)配置

本篇是继上一篇svn服务器搭建的后传,svn提交后,自动将数据同步到服务器的某个目录(如/home/wwwroot/svnweb/等)。这将要说的就是svn的hooks(钩子)配置。(前提是已经配置好svn服务器)

svn的hooks(钩子)是一种脚本程序,是由svn服务器控制,当svn账户做了某一种操作,服务器这时就会检测hooks目录里的相关脚本程序,如果有相关操作,svn服务器就会自动去执行。
本篇我们主要说的就是commit(提交)后自动同步(hooks下的post-commit)。

首先cd进入到svn服务目录下的hooks中,然后拷贝一份post-commit.tmpl为post-commit

cp post-commit.tmpl post-commit

然后vim编辑刚刚拷贝的post-commit为

#!/bin/sh

export LANG=zh_CN.utf-8
REPOS=”$1″
REV=”$2″
SVN=svn
WEB=/home/wwwroot/svnweb/web1
LOG_PATH=/tmp/svn_update.log
echo “==#####COMMIT ” date "+%Y-%m-%d %H:%M:%S" ‘######==’ >> $LOG_PATH
echo whoami,$REPOS,$REV >> $LOG_PATH
“$SVN” update –username username1 –password username1pwd “$WEB” –no-auth-cache >> “$LOG_PATH”

设置utf-8编码,及要同步的web路径,以及/tmp下设置每次更新的log日志。最后设置update时你拥有相关权限的用户名和密码,wp保存退出。
然后,将这个post-commit文件的权限设置为可执行文件

chmod 777 post-commit

然后,去你的web目录下(用你刚刚在hooks里配置的账户更新一下你的svn)

cd /home/wwwroot/svnweb

进到web目录下(你hooks里设置的web目录的上级目录),然后checkout.(这里的127.0.0.1是(上一篇配置的)根目录下为web1)

svn co svn://127.0.0.1/

输入你在hooks里配置的用户和密码,进行checkout,这时你当前目录下(svnweb)就会有个web1的文件夹,进入到文件夹(cd web1)中做下更新操作

svn up

此时你的当前目录就已经和钩子关联上了,为了避免冲突,这个目录就不要在进行其他操作了,以免会和hooks冲突。

此时,svn的hooks就配置完成了。
你可以在你的其他客户端,进行提交测试,看看你的网站web1目录下是否有提交过的文件。
然后查看服务器根目录下/tmp里的svn_update.log里的内容,看看是否打印正常报错与否。
如果有报错,可以去Google、baidu或者直接给我留言。

5 + 9 =

回到顶部