#!/bin/bash # Wiki SOP 检查清单 pre-commit hook # 用途:在提交前强制检查 Wiki SOP 检查清单 echo "🔍 执行 Wiki SOP 检查..." # 检查是否有 Wiki 文件修改 WIKI_FILES=$(git diff --cached --name-only | grep -E "^wiki/.*\.md$" | grep -v "WIKI_SOP") if [ -z "$WIKI_FILES" ]; then # 没有 Wiki 文件修改,跳过检查 echo "✅ 无 Wiki 文件修改,跳过 SOP 检查" exit 0 fi echo "📝 检测到 Wiki 文件修改:" echo "$WIKI_FILES" echo "" # 检查 WIKI_SOP_CHECKLIST.md 是否存在 if [ ! -f "wiki/WIKI_SOP_CHECKLIST.md" ]; then echo "❌ 错误:WIKI_SOP_CHECKLIST.md 不存在!" echo " 请先创建检查清单文件" exit 1 fi # 检查 WIKI_SOP_LOG.md 是否存在 if [ ! -f "wiki/WIKI_SOP_LOG.md" ]; then echo "❌ 错误:WIKI_SOP_LOG.md 不存在!" echo " 请先创建检查记录文件" exit 1 fi # 检查 WIKI_SOP_LOG.md 是否有本次提交的检查记录(检查最近一次提交日期) TODAY=$(date +%Y-%m-%d) if ! grep -q "$TODAY" wiki/WIKI_SOP_LOG.md; then echo "⚠️ 警告:WIKI_SOP_LOG.md 中没有今日($TODAY)的检查记录" echo "" echo "📋 请在提交前填写 WIKI_SOP_LOG.md:" echo " 1. 复制模板中的检查清单" echo " 2. 逐项检查并打勾 [x]" echo " 3. 填写提交信息和时间" echo "" echo "❌ 提交已阻止,请填写检查记录后重新提交" exit 1 fi # 检查 WIKI_SOP_LOG.md 中今日记录是否所有项目都打勾 TODAY_CHECKS=$(grep -A30 "$TODAY" wiki/WIKI_SOP_LOG.md | grep -c "\[x\]") if [ "$TODAY_CHECKS" -lt 10 ]; then echo "⚠️ 警告:WIKI_SOP_LOG.md 中今日记录的检查项目不足(发现 $TODAY_CHECKS 项,应≥10 项)" echo "" echo "📋 请确保所有检查项目都已打勾 [x]" echo "" echo "❌ 提交已阻止,请完成所有检查后重新提交" exit 1 fi echo "✅ Wiki SOP 检查通过($TODAY_CHECKS 项检查已打勾)" echo "" echo "📝 允许提交以下文件:" echo "$WIKI_FILES" echo "" exit 0