#!/bin/bash
# AgentOS pre-push 钩子
# 防止意外使用 git push --force 覆盖他人提交
# 在所有机器上通过 git pull 自动同步

# 检查是否使用了 --force
for arg in "$@"; do
    if [ "$arg" = "--force" ] || [ "$arg" = "-f" ]; then
        echo ""
        echo "❌ 禁止使用 git push --force"
        echo "   这会覆盖其他机器的提交记录"
        echo ""
        echo "✅ 正确做法："
        echo "   git pull   # 先拉取别人更新"
        echo "   git push   # 再推自己的"
        echo ""
        echo "⚠️ 如需强制推送（如修复敏感信息），改用安全的："
        echo "   git push --force-with-lease"
        echo ""
        exit 1
    fi
done

# 检查是否落后于远程
if git rev-parse --verify HEAD >/dev/null 2>&1; then
    REMOTE_HASH=$(git rev-parse origin/main 2>/dev/null)
    LOCAL_HASH=$(git rev-parse HEAD)
    if [ "$REMOTE_HASH" != "" ] && [ "$REMOTE_HASH" != "$LOCAL_HASH" ]; then
        # 检查本地是否直接基于远程
        MERGE_BASE=$(git merge-base HEAD origin/main)
        if [ "$MERGE_BASE" != "$REMOTE_HASH" ]; then
            echo ""
            echo "⚠️  本地落后于远程，建议先 git pull 再推送"
            echo "    git pull"
            echo "    git push"
            echo ""
        fi
    fi
fi
