Files
his/.githooks/integrity-check.sh

66 lines
2.0 KiB
Bash
Executable File

#!/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