cat git_tar.py import subprocess,tarfile,os def finds(): tar = tarfile.open("test.tar.gz","w:gz") result=subprocess.call('git diff 99gw 99gw_old>result.txt',shell=True) if os.path.getsize('result.txt')!=0: file=open('result.txt','r') for line in file: line=line.strip() if line.startswith("diff --git a/"): files=line.strip() files=files.split()[2] files=files[2:] tar.add(files) file.close() tar.close() else: print 'git not diff'

if name=='main':

finds()

vim UPGRADE.sh #git clone code. dirName=dirname $0 cd $dirName [ -d 99gw_old ] || echo "Error: 99gw_old dir not exist." git clone git@gitee.com:BangHan/99gw.git

#diff dir 99gw and 99gw_old diff -urN 99gw 99gw_old |awk '/^diff -urN/{print $3}' > diff.txt for var in $(cat diff.txt);do dir=${var%/*} [ -d temp ] || mkdir -p temp [ -d temp/$dir ] || mkdir -p temp/$dir [ -f $var ] && \cp -p $var temp/$dir done

#rsyn diffed files to remote hosts. hosts=" 172.19.xx.xx 172.19.xx.xx " for host in $hosts;do rsync -avz -e ssh temp/99gw/* $host:/tmp/99gw_old/; done

#rename local git dir. t=$(date +%Y%m%d_%H%M%S) mv 99gw_old 99gw_$t && mv 99gw 99gw_old [ $? -ne 0 ] && echo "directory rename error"