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

 

posted @ 2017-03-31 18:44  sunmmi  阅读(423)  评论(0)    收藏  举报