#!/bin/bash # ============================================================ # Integrity Check — 定时巡检 develop 分支的完整性 # 用法: bash .githooks/integrity-check.sh # 建议: crontab 每天 8:00 执行一次 # ============================================================ # 配置 REMOTE="origin" BRANCH="develop" WORK_DIR="/tmp/his-integrity-check" # 受保护路径 PATHS=( "openhis-server-new/pom.xml" "openhis-server-new/core-admin/pom.xml" "openhis-server-new/core-common/pom.xml" "openhis-server-new/core-flowable/pom.xml" "openhis-server-new/core-framework/pom.xml" "openhis-server-new/core-generator/pom.xml" "openhis-server-new/core-quartz/pom.xml" "openhis-server-new/core-system/pom.xml" "openhis-server-new/openhis-application/pom.xml" "openhis-server-new/openhis-domain/pom.xml" "openhis-server-new/openhis-common/pom.xml" ) echo "== Integrity Check $(date) ==" # 拉取最新 cd $WORK_DIR 2>/dev/null || (mkdir -p $WORK_DIR && cd $WORK_DIR && git clone --depth=1 http://zhangfei:GentronHIS2025@192.168.110.253:3000/wangyizhe/his.git . 2>/dev/null) cd $WORK_DIR && git fetch origin $BRANCH --depth=1 2>/dev/null && git reset --hard origin/$BRANCH 2>/dev/null ALL_PASS=true # 检查每个路径是否存在 for path in "${PATHS[@]}"; do if git ls-tree -r HEAD --name-only 2>/dev/null | grep -q "^$path$"; then echo " ✅ $path" else echo " ❌ $path — 丢失!" ALL_PASS=false fi done # 检查最近10次提交是否有异常 echo "" echo "最近10次提交:" git log --oneline -10 2>/dev/null | while read sha msg; do # 检查删除文件数 del=$(git diff --name-status ${sha}^..${sha} 2>/dev/null | grep -c "^D") if [ "$del" -gt 100 ]; then echo " ⚠️ $sha 删除了 $del 个文件! $msg" else echo " ✓ $sha ($del 删除) $msg" fi done if [ "$ALL_PASS" = true ]; then echo "" echo "✅ 完整性检查通过" else echo "" echo "❌ 完整性检查失败! 请立即处理!" fi