svn 钩子站点同步
1.在站点目录先checkout一下
# checkout站点 svn checkout http://192.168.1.106:8090/svn/webtest # update测试 svn update http://192.168.1.106:8090/svn/webtest
2.建立钩子脚本,赋予执行权限
cd /data/svn/data/webtest/hooks cp post-commit.tmpl post-commit chmod +x post-commit
3.post-commit脚本
#!/bin/sh
# 修改编码
#export LANG=zh_CN.utf-8
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
# 仓库路径,仓库版本
REPOS="$1"
REV="$2"
# 脚本的标准输出和标准错误输出都打印到日志文件里
LOG=$REPOS/post-commit.log
exec 1>>"$LOG"
exec 2>&1
# 提交命令,时间,修改作者,修改目录集合,提交的备注信息
SVNLOOK=/usr/bin/svnlook
TIME=$(date "+%Y-%m-%d %H:%M:%S")
AUTHOR=$($SVNLOOK author -r $REV "$REPOS")
CHANGEDDIRS=$($SVNLOOK dirs-changed $REPOS)
MESSAGE=$($SVNLOOK log -r $REV "$REPOS")
# svn命令,web路径,日志信息
echo "======================================================" >>$LOG
SVN=/usr/bin/svn
WEB=/var/www/html/webtest/
#LOG=/data/svn/data/webtest/post-commit.log
#update the code from the SVN
$SVN update $WEB --username pi05 --password 186 --non-interactive
chown -R apache:apache $WEB
chmod -R 755 $WEB
if [ $? == 0 ]
then
echo "======================================================" >>$LOG
echo "$TIME 提交版本:$REV 提交者:$AUTHOR" >>$LOG
echo "$TIME 提交备注:$MESSAGE" >>$LOG
#echo "$TIME 修改目录:$(echo $CHANGEDDIRS | tr '\n' ' ') >>$LOG
# 空格替成换行符
echo "$TIME 修改目录:$(echo $CHANGEDDIRS | tr ' ' '\n' | sed 's#^# #g')"
echo "$TIME 仓库目录:$REPOS" >> $LOG
echo "======================================================" >> $LOG
fi
4.记录提交信息
#!/bin/sh
# 修改编码
#export LANG=zh_CN.utf-8
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
# 仓库路径,仓库版本
REPOS="$1"
REV="$2"
# 脚本的标准输出和标准错误输出都打印到日志文件里
LOG=$REPOS/post-commit.log
exec 1>>"$LOG"
exec 2>&1
# 提交命令,时间,修改作者,修改目录集合,提交的备注信息
SVNLOOK=/usr/bin/svnlook
TIME=$(date "+%Y-%m-%d %H:%M:%S")
AUTHOR=$($SVNLOOK author -r $REV "$REPOS")
CHANGEDDIRS=$($SVNLOOK dirs-changed $REPOS)
MESSAGE=$($SVNLOOK log -r $REV "$REPOS")
# svn命令,web路径,日志信息
echo "======================================================"
if [ $? == 0 ]
then
echo "======================================================"
echo "$TIME 提交版本:$REV 提交者:$AUTHOR"
echo "$TIME 提交备注:$MESSAGE"
#echo "$TIME 修改目录:$(echo $CHANGEDDIRS | tr '\n' ' ')
# 空格替成换行符
echo "$TIME 修改目录:$(echo $CHANGEDDIRS | tr ' ' '\n' | sed 's#^# #g')"
echo "$TIME 仓库目录:$REPOS"
echo "======================================================"
fi

浙公网安备 33010602011771号