install_hooks.sh•3 kB
#!/bin/bash
# Git Hook安装脚本
# 安装post-commit hook到.git/hooks/目录
set -e
# 获取脚本所在目录和项目根目录
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(dirname "$SCRIPT_DIR")"
echo "🚀 Installing MemOS Git Hooks..."
echo "Project root: $PROJECT_ROOT"
echo "Scripts directory: $SCRIPT_DIR"
# 检查是否在Git仓库中
if [ ! -d "$PROJECT_ROOT/.git" ]; then
echo "❌ Error: Not in a Git repository"
echo "Please run this script from the MemOS project root directory"
exit 1
fi
# 检查必要的文件是否存在
HOOK_SOURCE="$SCRIPT_DIR/post-commit"
RECORD_SCRIPT="$SCRIPT_DIR/record_commit.py"
if [ ! -f "$HOOK_SOURCE" ]; then
echo "❌ Error: post-commit hook not found at $HOOK_SOURCE"
exit 1
fi
if [ ! -f "$RECORD_SCRIPT" ]; then
echo "❌ Error: record_commit.py not found at $RECORD_SCRIPT"
exit 1
fi
# 创建hooks目录(如果不存在)
HOOKS_DIR="$PROJECT_ROOT/.git/hooks"
mkdir -p "$HOOKS_DIR"
# 安装post-commit hook
HOOK_TARGET="$HOOKS_DIR/post-commit"
echo "📝 Installing post-commit hook..."
cp "$HOOK_SOURCE" "$HOOK_TARGET"
chmod +x "$HOOK_TARGET"
echo "✅ post-commit hook installed at $HOOK_TARGET"
# 验证安装
if [ -x "$HOOK_TARGET" ]; then
echo "✅ Hook is executable"
else
echo "❌ Warning: Hook is not executable"
chmod +x "$HOOK_TARGET"
fi
# 检查Python脚本权限
chmod +x "$RECORD_SCRIPT"
echo "✅ record_commit.py is executable"
# 测试hook(可选)
echo ""
echo "🧪 Testing hook installation..."
cd "$PROJECT_ROOT"
# 检查Python环境
if command -v python3 &> /dev/null; then
echo "✅ Python3 is available"
# 测试Python脚本语法
if python3 -m py_compile "$RECORD_SCRIPT" 2>/dev/null; then
echo "✅ record_commit.py syntax is valid"
else
echo "⚠️ Warning: record_commit.py has syntax issues"
fi
else
echo "❌ Warning: Python3 not found"
fi
# 检查Memory Ops SDK
echo "🔍 Checking Memory Ops SDK..."
if python3 -c "import sys; sys.path.insert(0, '.'); from simple_memory_ops_sdk import SimpleMemoryOps; print('✅ SimpleMemoryOps available')" 2>/dev/null; then
echo "✅ Memory Ops SDK is available"
elif python3 -c "import sys; sys.path.insert(0, '.'); from memory_ops_sdk import MemoryOps; print('✅ MemoryOps available')" 2>/dev/null; then
echo "✅ Memory Ops SDK is available (fallback)"
else
echo "⚠️ Warning: Memory Ops SDK not available"
echo " The hook will still be installed but may not work properly"
fi
echo ""
echo "🎉 Git Hook installation completed!"
echo ""
echo "📋 Next steps:"
echo "1. Make a test commit to verify the hook works"
echo "2. Check your memory system for recorded commit information"
echo "3. Use 'git log --oneline -5' to see recent commits"
echo ""
echo "🔧 To uninstall the hook, run:"
echo " rm $HOOK_TARGET"
echo ""
echo "📖 To test error catching, run:"
echo " python3 $SCRIPT_DIR/error_catcher.py"