85 lines
3.5 KiB
Markdown
85 lines
3.5 KiB
Markdown
# 上游同步指南(Rainytoken 二开合并流程)
|
||
|
||
> 目的:上游(CATMIAOZHI/Rainytoken)持续更新时,把二开工作区(本地分支)与上游
|
||
> 新基线对齐,冲突可控、可重复、可一键执行。
|
||
> 本仓库两条线:**main = 上游基线跟踪**(保持可随时 fetch/rebase);**dev = 二开改动**。
|
||
|
||
---
|
||
|
||
## 1. 仓库当前状态
|
||
|
||
| 分支 | 内容 | 说明 |
|
||
|---|---|---|
|
||
| `main` | 上游基线(当前 eecf549,v1.6.3 后继续可追) | 不加入二开改动,保持与 origin/main 一致 |
|
||
| `dev`(建议名) | 全部二开改动(3 家供应商 + API 管理页 + 用量页 + 充值 + Sub2API 明细升级 + 本指南) | 二开唯一工作分支 |
|
||
|
||
> 因为当初二开没有分叉提交,**全部二开改动都在工作区**;首次授权后统一 commit 到 `dev`。
|
||
> 上游的 5 个提交(v1.6.4)尚未合入二开,按下面的流程合并后二开同时拥有两边功能。
|
||
|
||
---
|
||
|
||
## 2. 每轮上游更新的快捷流程(一键脚本)
|
||
|
||
在项目根目录执行(Git Bash):
|
||
|
||
```bash
|
||
./scripts/sync-upstream.sh
|
||
```
|
||
|
||
脚本自动完成:fetch 上游 → 切到 `dev` → rebase 到 `origin/main` → `assembleDebug` 编译验证。
|
||
|
||
手动等价流程:
|
||
|
||
```bash
|
||
# 1. 拉上游(直连,绕过失效代理)
|
||
git -c http.proxy= -c https.proxy= fetch origin main
|
||
|
||
# 2. 在二开分支上 rebase 到新基线
|
||
git checkout dev
|
||
git rebase origin/main
|
||
|
||
# 3. 若冲突:手动解决相同文件后
|
||
git add <冲突文件>
|
||
git rebase --continue
|
||
|
||
# 4. 编译回归
|
||
CI=true ./gradlew.bat :app:assembleDebug
|
||
```
|
||
|
||
---
|
||
|
||
## 3. 已知冲突面(预计最多遇到的)
|
||
|
||
二开与上游都在改的文件,但**改动区域通常不同**,多为小冲突:
|
||
|
||
| 文件 | 上游改 | 二开改 | 冲突可能性 |
|
||
|---|---|---|---|
|
||
| `app/src/main/java/com/rainy/token/domain/service/ServiceType.kt` | CCGO 显示名 | 追加 Trae/WorkBuddy/Sub2API 枚举 | 低(相邻区域,git 自动合) |
|
||
| `app/src/main/res/values*/strings.xml` ×3 | CCGO 更名 + 时间选择器 key | sub2_* 系列 + 服务三语 | 低 |
|
||
| `app/src/main/java/com/rainy/token/ui/components/ServiceIcon.kt` | CCGO 更名 | 新服务图标分支 | 低 |
|
||
| `app/src/main/java/com/rainy/token/di/NetworkModule.kt` | CCGO 更名 | 3 个新 Repository @Provides | 低 |
|
||
| `app/src/main/java/com/rainy/token/ui/servicedetail/ServiceDetailScreen.kt` | CCGO 文案 | Sub2API 明细卡分支 + 充值 | 低 |
|
||
| `app/src/main/java/com/rainy/token/ui/dashboard/Usage*Screen.kt` | 时间选择器大改 | (二开基本没动) | 无 |
|
||
|
||
> 尾部逗号/顺序类冲突:每次合并时**统一以「二开语义」为准**重新排布,不影响功能。
|
||
> 版本号(`app/build.gradle.kts`):上游 taste.md 已声明**版本号控制权归上游作者**——
|
||
> 二开合并上游后**不要自作主张 bump 版本**;由用户在发版时决策。
|
||
|
||
---
|
||
|
||
## 4. 变更落地检查清单(每次合并后)
|
||
|
||
1. `assembleDebug` 绿(脚本已做);
|
||
2. 服务枚举/凭据指纹 `when` 无编译告警(新增枚举必有分支);
|
||
3. 三语 strings 无缺 key(lint 可查);
|
||
4. 若有 UI 改动 → taste.md 要求的独立 subagent 审计;
|
||
5. 需要推手机看效果:`adb -s <serial> install -r app/build/outputs/apk/debug/app-debug.apk`。
|
||
|
||
---
|
||
|
||
## 5. 建议节奏
|
||
|
||
- 上游「发版」(release commit)或你看到感兴趣的新功能时再合并,不必每次小提交都跟;
|
||
- 合完上游后建议打一个二开本地 tag(`rain-<日期>`)便于回溯;
|
||
- 禁止直接 push 到上游;二开仓库如需推送,仅推 `dev` 且需用户授权。
|