# 上游代码同步架构指南 (Upstream Synchronization Guide)

## 1. 核心理念 (Core Philosophy)

作为基于开源项目二次开发的商业项目，我们采用 **"双流分支策略" (Dual-Stream Branching Strategy)**。这一策略旨在解决以下核心冲突：
*   **Keep Updated**: 必须紧跟官方 bug 修复和新特性。
*   **Keep Customized**: 必须严格保留私有的 UI 定制和资源修改。

## 2. 分支架构 (Branch Architecture)

我们维护两个长期的核心分支：

### A. `upstream-main` (官方纯净流)
*   **定义**: 官方代码在本地的**只读镜像**。
*   **规则**: 
    1.  **严禁**直接修改此分支代码。
    2.  仅通过 `git pull upstream main` 更新。
*   **作用**: 作为 Merge 的基准（Base），确保我们清楚知道“官方改了什么”。

### B. `master` (私有定制流)
*   **定义**: 我们的生产环境主分支。
*   **组成**: `upstream-main` + `私有补丁 (Custom Patches)`。
*   **私有补丁内容**:
    *   `images/` 下的定制资源。
    *   `UI Widgets` 的样式调整（如 `video_screen.dart` 的改动）。

### C. `LOCAL_CHANGES.md` (变更白皮书)
*   **定义**: 项目的“差异账本”。
*   **规则**: 任何不跟随官方的修改，**必须**在此文件记录。这能让我们在合并冲突时快速回忆起“这是我们故意改的”还是“意外”。

## 3. 同步工作流 (Synchronization Workflow)


每当需要同步官方更新时，执行以下标准流程（Standard Operating Procedure）：

1.  **更新基准**: 切换到 `upstream-main` 并拉取最新官方代码。
2.  **执行合并**: 切换回 `master`，合并 `upstream-main`。
3.  **资源保护**: 如果发生冲突，始终以 `master` 的 `images/` 为准（"Ours" 策略）。

## 4. 自动化脚本 (Automation)

为了降低人为失误，我们提供了自动化脚本 `scripts/sync_from_upstream.sh`。

### 脚本逻辑
1.  自动 Fetch `upstream`。
2.  重置 `upstream-main` 到最新官方 commit。
3.  尝试合并到 `master`。
4.  **关键保护**:哪怕没有冲突，脚本也会强制检查并恢复 `images/` 目录到合并前的状态，确保私有资源不被官方资源覆盖。

```bash
# 执行方式
./scripts/sync_from_upstream.sh
```

---
**Architect Note**: 保持 `upstream-main` 的纯净是此架构的基石。一旦该分支被污染，差异对比将失去意义。

## 5. 如何在其他项目复用 (How to Reuse)

如果您有其他类似项目（既要跟上游，又有本地定制），请按以下步骤复用此方案：

1.  **复制脚本**: 将 `scripts/sync_from_upstream.sh` 复制到新项目的 `scripts/` 目录。
2.  **配置参数**: 打开复制后的脚本，编辑顶部的配置项：
    ```bash
    # 配置您的上游仓库地址
    UPSTREAM_URL="https://github.com/Your/Upstream-Repo.git"
    
    # 配置您需要保护的目录（如 config, assets 等），以空格分隔
    PROTECTED_PATHS="config/ assets/ images/"
    ```
3.  **赋予权限**: 运行 `chmod +x scripts/sync_from_upstream.sh`。
4.  **初始化**: 第一次运行脚本时，它会自动为您创建 `upstream-main` 分支。

