31 lines
1021 B
Bash
Executable File
31 lines
1021 B
Bash
Executable File
#!/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"
|