Files

72 lines
4.1 KiB
Bash
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/bash
# publish_sdk.sh — 把主仓的公开 SDK 内容增量同步到公开 SDK 仓 MeowOS-SDK。
#
# ============ 背景 ============
# 公开仓:ssh://git@git.yeij.top:2222/AskaEth/MeowOS-SDK.git(**MIT**;面向第三方开发者)。
# 仅含公开内容:sdk/(meow_ui)+ examples/hello/ + docs/ + README + LICENSE + .gitignore;
# 不含主仓系统组件(launcher/amsd/audiod/svc_*)、固件、签名工具、密钥。
#
# 由本仓经 git subtree split 拆出(顶层布局与主仓 patch_v2 不同):
# sdk/ ← 本仓 patch_v2/sdk/
# examples/hello/ ← 本仓 patch_v2/hello_app/
# 顶层 docs/ + README + LICENSE + .gitignore 为手工维护(初始拆仓与后续改动见下)。
#
# ⚠️ 差异声明:公开仓内的 sdk/build_sdk.sh、examples/hello/build_hello.sh 已改**自包含**
# (meow_ipc.h / meow_font.h / meow_notif.h / meow_font.c 均 vendored 进 sdk/,不依赖
# 本仓 meow_launcherd/;工具链默认 $HOME/Project/R3ProII/.tools/zig-mipsel-cc,可用
# MEOW_CC / MEOW_SYSROOT 覆盖)。故**增量同步只推 sdk/ 与 examples/hello/ 的源码子树**,
# build_sdk.sh / build_hello.sh 的本地改动需单独留意(若公开仓改过,pull 会合并冲突)。
# ============ 初始拆仓(已执行一次,记录备查) ============
# # 主仓侧:subtree split 出两个分支
# git subtree split --prefix=patch_v2/sdk -b pub/sdk
# git subtree split --prefix=patch_v2/hello_app -b pub/hello
# # 公开仓侧(~git init -b main,提交 README/LICENSE/.gitignore/docs 作根,然后):
# git fetch <主仓> +refs/heads/pub/sdk:refs/heads/pub/sdk +refs/heads/pub/hello:refs/heads/pub/hello
# git subtree add --prefix=sdk pub/sdk
# git subtree add --prefix=examples/hello pub/hello
# # 之后在公开仓做适配 commit:剔除构建产物/宿主测试二进制、vendored 依赖、改写脚本。
# ============ 增量同步(主仓 sdk/ 更新后再推) ============
# 用法:先保证主仓 patch_v2/sdk 的改动已 commit,然后:
# bash scripts/publish_sdk.sh [--push]
# 脚本会在主仓重跑 split,再进公开仓 subtree pull 两个子树;加 --push 则把公开仓 push 到 Gitea。
# 前提:Gitea 已建 public 仓 AskaEth/MeowOS-SDK(未建:push-to-create 默认关闭,需手动建)。
set -euo pipefail
MAIN_REPO="${MAIN_REPO:-$(cd "$(dirname "$0")/.." && pwd)}" # 主仓(本仓)
SDK_REPO="${SDK_REPO:-$HOME/Project/MeowOS-SDK}" # 公开仓本地路径
UPSTREAM="${UPSTREAM:-upstream}" # 公开仓里指向「主仓」的 remote 名(非 origin)
SDK_URL="ssh://git@git.yeij.top:2222/AskaEth/MeowOS-SDK.git" # 公开仓远端
DO_PUSH=0; [ "${1:-}" = "--push" ] && DO_PUSH=1
[ -d "$SDK_REPO" ] || { echo "❌ 公开仓不存在: $SDK_REPO"; echo " 请先 Gitea 建 $SDK_URL 并 git clone 到 $SDK_REPO"; exit 1; }
# 0) 公开仓配 upstream(指向主仓,供 subtree pull 取 split 分支)
cd "$SDK_REPO"
if ! git remote get-url "$UPSTREAM" >/dev/null 2>&1; then
git remote add "$UPSTREAM" "$MAIN_REPO"
echo " ↑ 公开仓已加 remote $UPSTREAM = $MAIN_REPO"
fi
# 1) 主仓侧:重新 subtree split(产出最新 pub/sdk、pub/hello)
echo "== [主仓] subtree split =="
( cd "$MAIN_REPO" && \
git subtree split --prefix=patch_v2/sdk -b pub/sdk && \
git subtree split --prefix=patch_v2/hello_app -b pub/hello )
# 2) 公开仓侧:subtree pull 两个子树(把主仓新提交合进 sdk/、examples/hello/)
echo "== [公开仓] subtree pull sdk =="
git subtree pull --prefix=sdk "$UPSTREAM" pub/sdk
echo "== [公开仓] subtree pull examples/hello =="
git subtree pull --prefix=examples/hello "$UPSTREAM" pub/hello
echo "== 完成。git status 如下,请人工检查是否一致到期待内容: =="
git status --short
if [ "$DO_PUSH" = 1 ]; then
echo "== push 到 $SDK_URL =="
git push origin main
fi
echo "== 若 docs/README/LICENSE 也要同步:手动拷贝主仓 docs/APP_DEV_GUIDE.md 与 MEOW_APP_SDK.md 的**公开改写版**并 commit(公开仓内这两份已改写为自包含/注明主仓内幕)。=="