# 自动生成热更新包工作流使用教程

本目录用于自动生成 DLC 热更新包，并发布到 GitHub Release（可选同步到 Gitee）。

## 本文档仅支持 DLC Manager `3.6.5` 及以上版本。

## 1. 准备
- 先基于模板创建你的整合包仓库：[Github链接](https://github.com/CoZooo/Modpack-Template)
- 确保`DLC/info/`目录（也可手动指定位置，详见下方的`VERSION_DC_PATH`配置项）中有 `version.dc`，用于记录当前 `base` 和 `dlc` 版本。
- 在`.gitignore`文件中加入你需要排除检测更改的文件和目录（路径）。
- 可选：在仓库根目录放置 `changelog` / `CHANGELOG`（任意一个即可），内容将作为更新日志。

### 推荐：使用 GitHub Desktop
建议使用 GitHub Desktop 管理仓库。

操作步骤：
1. 安装 [GitHub Desktop](https://desktop.github.com/) 并登录 GitHub 账号。
2. 在 GitHub Desktop 中打开你的整合包仓库（`File -> Add local repository...` 或直接 `Clone`）。
3. 后续照常在 GitHub Desktop 中提交/推送。

### 可选：启用 Git LFS（大文件）
如果仓库里包含大文件（100MB 以上，如 `.jar`、`.zip`），建议启用 Git LFS。

操作步骤：
1. 打开仓库终端（`Repository -> Open in Terminal`），执行：
   ```bash
   git lfs install
   git lfs track "*.jar"
   git lfs track "*.zip"
   ```
2. 提交并推送自动生成的 `.gitattributes` 文件。

注意：
- 新协作者首次拉取仓库后，建议执行一次 `git lfs pull`，确保本地拿到真实文件而非指针文件。

## 2. 自动生成热更新包
工作流：`auto-generate-update-pack.yml`

触发方式：
- 推送到 `main` 自动触发。
- 也可手动运行。

自动模式会在检测到 `version.dc` 版本变化时生成热更新包；无版本变化则不生成。

### Repository Variables
- `AUTO_UPDATE_WORKFLOW`
  - 作用：是否启用 push 自动生成。
  - 可选：`false` / `true`
  - 默认：`true`
- `VERSION_DC_PATH`
  - 作用：指定 `version.dc` 路径。
  - 默认：`DLC/info/version.dc`
- `CLIENT_BRANCH`
  - 作用：自动模式下，匹配为客户端热更新包的分支名。
  - 格式：多个分支名用逗号分隔，忽略大小写。
  - 示例：`client,client-release,feature-client`
- `SERVER_BRANCH`
  - 作用：自动模式下，匹配为服务端热更新包的分支名。
  - 格式：多个分支名用逗号分隔，忽略大小写。
  - 示例：`server,server-release,feature-server`
- `AUTO_UPDATE_PLATFORM`
  - 作用：自动模式使用的平台。
  - 可选：`universal` / `client` / `server`
  - 默认：`universal`
- `AUTO_SYNC_TO_GITEE`
  - 作用：自动模式是否同步 Gitee。
  - 可选：`false` / `true`
  - 默认：`false`

## 3. Gitee 同步
工作流：`sync-github-release-to-gitee.yml`

### 必填配置
Repository Variables：
- `GITEE_USERNAME`：Gitee 用户名
- `GITEE_REPO`：Gitee 仓库名

Secrets：
- `GITEE_TOKEN`：Gitee Access Token

## 4. 手动生成热更新包
工作流：`generate-update-pack.yml`

需要填写的参数：
- `from_ref`：
  - 作用：对比起点（从哪里开始算改动）。
  - 可填：tag / commit / branch。
  - 可留空：系统自动选择合适起点。
- `to_ref`：
  - 作用：对比终点（改动截至到哪里）。
  - 可填：tag / commit / branch。
  - 留空默认：当前最新提交（`HEAD`）。
- `platform`：
  - 作用：指定热更新包平台。
  - 可选：`universal` / `client` / `server`。
- `base`：
  - 作用：更新前底包版本。
  - 示例：`3.12.0`
- `base_new`：
  - 作用：更新后底包版本。
  - 示例：`3.12.1`
- `dlc`：
  - 作用：更新前 DLC 版本。
  - 示例：`1.0.0`
- `dlc_new`：
  - 作用：更新后 DLC 版本。
  - 示例：`1.0.1`
- `sync_to_gitee`：
  - 作用：生成并发布到 GitHub 后，是否同步到 Gitee。
  - 可选：`false` / `true`

注意：
- `base/base_new` 和 `dlc/dlc_new` 不能同时不变，否则会直接报错退出。

## from_ref / to_ref 填写说明
- `to_ref`：
  - 一般留空即可，表示使用当前最新提交（`HEAD`）。
  - 需要指定时可填：分支名、tag、commit 哈希。
- `from_ref`：
  - 作用是指定“从哪个版本/提交开始对比”。
  - 常见填法：
    - 上一个热更新 tag（推荐）。
    - 某个历史 commit（想只打某几次提交的改动时）。
    - 某个分支或 tag 名。
  - 留空时会自动选择可用的对比起点。
