#!/bin/bash
# 用于将 dev 分支合并到 prod 分支，保留 prod 配置文件版本
# 支持第一次对齐历史 & 后续增量合并
# 使用方法：
# bash scripts/merge_dev_to_pro.sh first    # 第一次合并
# bash scripts/merge_dev_to_pro.sh          # 以后正常合并

CONFIG_FILES=("Jenkinsfile" "Dockerfile" "nginx.conf")

# 确保脚本在项目根目录运行
if [ ! -d .git ]; then
    echo "❌ 请在 Git 项目根目录运行此脚本"
    exit 1
fi

# 检查是否有未提交的更改
if ! git diff --quiet || ! git diff --cached --quiet; then
    echo "❌ 检测到本地有未提交的改动，请先提交或暂存后再执行合并"
    exit 1
fi

# 更新本地分支
echo "📦 更新本地分支..."
git checkout prod && git pull origin prod || exit 1
git checkout dev && git pull origin dev || exit 1

# 切回 prod 分支
git checkout prod || exit 1

# 执行合并
if [ "$1" == "first" ]; then
    echo "🚀 第一次对齐历史，准备合并 dev..."
    git merge dev --no-commit || exit 1
else
    echo "🔄 增量合并 dev..."
    git merge dev --no-commit || exit 1
fi

# 保留 prod 分支的配置文件
echo "🛡 保留 prod 配置文件版本..."
for file in "${CONFIG_FILES[@]}"; do
    if [ -f "$file" ]; then
        git checkout --ours "$file"
        git add "$file"
        echo "  ✅ 已保留 $file"
    else
        echo "  ⚠️ $file 在当前分支不存在，跳过"
    fi
done

# 提交合并
git commit -m "Merge dev into prod (keep prod config files)"

# 推送确认
read -p "🚀 是否推送到远程 prod 分支？(y/N) " confirm
if [[ "$confirm" =~ ^[Yy]$ ]]; then
    git push origin prod
    echo "✅ 已推送到远程 prod 分支"
else
    echo "⏸ 已取消推送，可手动执行：git push origin prod"
fi
