#!/bin/bash
#@author: hry
#@desc: 提取两个git版本之间变动文件，然后copy这部分变动文件到web目录中，此脚本用于发布文件
#@params: none
workingBaseDir=/webdata/webdir/b2b2c
dstDir=/data/b2b2c
scriptDir=/root
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/php56/bin
rsync_opts="-zvrtl --no-p  --no-o --progress --delete --ignore-errors"

cd $workingBaseDir


git pull

lastVer=`cat $scriptDir/.version_log.txt`

yongestVer=`cat $workingBaseDir/.git/refs/heads/main`

if [ "$lastVer" = "$yongestVer" ];then

echo "当前已是最新版本,没有版本差异"

exit 0

fi

## 此处用户对比两个版本号之间文件变动，并过略掉删除的文件 
git diff  --name-status  $lastVer $yongestVer|sed "s/^\+//g"|awk '/^[^D ]/ {print $2}' > $scriptDir/git_log.txt 2>/dev/null

echo -e "$yongestVer" >$scriptDir/.version_log.txt

sed -r 's/\s+$//g' -i $scriptDir/.version_log.txt

if [[ $(cat $scriptDir/git_log.txt 2>/dev/null) != "" ]];then

# 如果不小心更改了根目录属性，此时会导致整个目录发布，排除这种情况

sed -i '/^[.]$/d' $scriptDir/.version_log.txt

#备份上一次checkou文件

mv $scriptDir/checkout_dir $scriptDir/checkout_bak/bak"_"`date +%Y%m%d%H%M%S`

mkdir -p $scriptDir/checkout_dir

#通过rsync把 git_log.txt 记录的文件copy出来[带路径]

rsync  $rsync_opts --exclude=".git" --exclude="*.db" --exclude="runtime/"  --files-from=$scriptDir/git_log.txt $workingBaseDir $scriptDir/checkout_dir >/dev/null 2>&1

fi


#执行copy

\cp -rp $scriptDir/checkout_dir/*  $dstDir
