66 lines
2.0 KiB
Bash
Executable File
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
|