窄多之Blog

窄多之Blog

自动复制git更新文件到目的地Bash脚本

- by Admin - 标签: BashGit

由于种种原因,git 目录无法成为自动发布的目录,所以有了这个 Bash 脚本,帮助复制当前 git 目录下更新的文件到目标目录。


#!/bin/bash set -e BLACK="\033[30m" RED="\033[31m" GREEN="\033[32m" YELLOW="\033[33m" BLUE="\033[34m" PINK="\033[35m" CYAN="\033[36m" WHITE="\033[37m" NORMAL="\033[0;39m" trg_dir=~/dest_folder/ hash=$1 if [ -z "$hash" ] then echo -e "${YELLOW}提示:缺少git commitId 【./auto_copy.sh commitId】" hash=$(git rev-parse --verify HEAD) echo -e "${PINK}最新提交commitId: ${hash} 【git log查看更多提交】" echo -e $NORMAL exit 0 fi num=`git diff-tree --no-commit-id --name-only -r $hash | wc -l` echo -e "${GREEN}commitId: ${hash}" echo -e $NORMAL #获取文件列表 git diff-tree --no-commit-id --name-only -r ${hash} > tmp_copy.txt echo -e "${YELLOW}============================================【更新${num}个文件到${trg_dir}】" cat tmp_copy.txt echo -e "============================================" echo -e $NORMAL read -p "确定复制?(Y/N) " -n 1 -r echo # (optional) move to a new line if [[ ! $REPLY =~ ^[Yy]$ ]] then echo -e "${CYAN}取消复制,已退出" echo -e $NORMAL exit 1 fi #生成目录 cat tmp_copy.txt | xargs -I % dirname ${trg_dir}% > tmp_copy_dir.txt cat tmp_copy_dir.txt | xargs -I % mkdir -p % #复制文件 export TMP_TRG_DIR=$trg_dir cat tmp_copy.txt | xargs -I '{}' sh -c 'cp -f ./{} "$TMP_TRG_DIR"`dirname {}`' unset TMP_TRG_DIR ##清理文件 rm -f tmp_copy_dir.txt rm -f tmp_copy.txt echo -e "${GREEN}复制成功,已退出" echo -e $NORMAL