svn钩子(post-commit)区分根目录上传的一级文件夹

 

该功能主要实现的是客户端提交的数据到svn,然后将会触发svn钩子(post-commit);根据svn根目录(svn检出一级目录定位根目录)下的每一个目录进行相对应的shell脚本触发;该功能主要作用于一个svn下根据提交不同的项目来触发不同的shell脚本,实现项目代码同步功能。

#!/bin/bash
export LANG="en_US.UTF-8"
EPOS="$1"
REV="$2"
SVNLOOK=/usr/bin/svnlook
SVN_PATH=$($SVNLOOK dirs-changed $EPOS)
#分割目录
INDEX_DIRECTORY=(${SVN_PATH//// })
#定义项目目录
DIRECTORY=('webProject' 'formalWebProject')
#定义服务器同步目录
LINUX_DIRECOTRY=('backup' 'formal')
#定义脚本前缀名
SHELL_PREFIX=('test' 'formal')
#获取数组长度
LENGTH=${#DIRECTORY[@]}
#获取当前项目目录名
INDEX_WEB=${INDEX_DIRECTORY[1]//./_}
#svn路径
SVN_URL=svn://192.168.8.240/WebCenter/
#SVN用户名密码
USERNAME=
PASSWORD=
#日志路径
LOGPATH=/var/log/hooks_log.log
for (( i = 0; i < ${LENGTH}; ++i ))
do
    if [[ ${INDEX_DIRECTORY[0]} = ${DIRECTORY[$i]} ]];then
        TARGET_PATH=/home/${LINUX_DIRECOTRY[$i]}/${INDEX_WEB}/
        /usr/bin/svn update ${SVN_URL}${DIRECTORY[$i]}/ ${TARGET_PATH} --username=${USERNAME} --password=${PASSWORD} --no-auth-cache
        if [[ $? -eq 0 ]]
        then    
            chown -R www:www ${TARGET_PATH}
            /bin/bash /home/shell/${SHELL_PREFIX[$i]}_${INDEX_WEB}_rsync.sh >> ${LOGPATH} 2>&1
        fi
    fi
done

 

如有不对的地方或更好的方法,欢迎下方留言指出,谢谢!

 
posted @ 2019-07-31 15:44  Mr*wang  阅读(699)  评论(0编辑  收藏  举报