首先SVN 提交 --->出发SVN的hooks---->post-comit为shell脚本,自动上传文件到服务器。 #!/bin/bash ## 解读diff文件(SVN差异日志) dirCount=0 for line in $(cat diff) do if [ -e ./${line} ]; then if [ -d ./${line} ]; then dirList[dirCount++]=${line} else listFiles="$listFiles ${line}" fi fi done ##对目录排序 for (( i=0 ; i<${#dirList[@]} ; i++ )) do for (( j=${#dirList[@]} - 1 ; j>i ; j-- )) do #echo $j if [[ ${#dirList[i]} -ge ${#dirList[j]} ]] then t=${dirList[j]} dirList[j]=${dirList[i]} dirList[i]=$t fi done done ##创建远程FTP目录 for (( i=0 ; i<${#dirList[@]} ; i++ )) do sh ./ftpmkdir.sh ${dirList[i]} done ftp -n<<! open 11.11.25.22 #你的远程FTP服务器 user yourFtpUserName yourFtpPassword binary hash cd /publish/ lcd /usr/local/nginx/html/publish/ prompt mput $listFiles close bye ! #创建远程目录 #!/bin/sh dir=$@ ftp -n<<! open 15.28.12.16 user username password binary hash cd /publish/ lcd /usr/local/nginx/html/publish/ prompt mkdir $dir close bye ! #hooook /usr/bin/svn update /usr/local/nginx/html/publish --username yoursvnusername --password ***** if [ -e /usr/local/nginx/html/publish/diff ]; then rm -rf /usr/local/nginx/html/publish/diff fi cd /usr/local/nginx/html/publish/ /usr/bin/svn diff --summarize -r "$((REV-1))":"$REV" > /usr/local/nginx/html/publish/diff /usr/local/nginx/html/publish/autoftpupload.sh