git 提取两版本号之间版本差异

######################################################################### # File Name: check_modified_file.sh # Author: sage # mail: 1186663217@qq.com # Created Time: Wed 03 Ju...

#!/bin/bash

#@author: hry

#@desc: 提取两个git版本之间变动文件,然后copy这部分变动文件到web目录中,此脚本用于发布文件

#@params: none

#git副本working目录

workingBaseDir=/webdata/webdir/b2b2c

#web网站目录

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


下载此脚本


  • 发表于 2019-07-13 19:17
  • 阅读 ( 65 )

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
石天
石天

437 篇文章

作家榜 »

  1. shitian 662 文章
  2. 石天 437 文章
  3. 每天惠23 33 文章
  4. 小A 29 文章