#!/usr/bin/env bash # save-patches.sh — 将 Antigravity 自定义改动导出为 patch 文件 # 用法: ./tools/scripts/save-patches.sh [输出目录] set -euo pipefail REPO_ROOT="$(cd "$(dirname "$0")/../.." && pwd)" OUTPUT_DIR="${1:-$REPO_ROOT/tools/patches}" UPSTREAM="origin/main" cd "$REPO_ROOT" # 检查是否有新的 upstream commits DIVERGED=$(git log --oneline "$UPSTREAM"..HEAD 2>/dev/null | wc -l | tr -d ' ') if [ "$DIVERGED" -eq 0 ]; then echo "[save-patches] 没有领先 upstream 的 commits,无需保存。" exit 0 fi mkdir -p "$OUTPUT_DIR" # 导出 patches git format-patch "$UPSTREAM"..HEAD --output-directory "$OUTPUT_DIR" --no-stat COUNT=$(ls "$OUTPUT_DIR"/*.patch 2>/dev/null | wc -l | tr -d ' ') echo "[save-patches] ✅ 已导出 $COUNT 个 patch 到 $OUTPUT_DIR/" echo "" echo "恢复方法(在全新 upstream checkout 上):" echo " git am $OUTPUT_DIR/*.patch" echo " # 或逐一应用:" echo " for p in $OUTPUT_DIR/*.patch; do git am \"\$p\" || git am --skip; done"