Polymerium
进阶

使用 Git 进行整合包开发

使用 Git 对整合包进行版本控制——跟踪变更、协作开发并发布发行版。

上次更新

为什么使用 Git?

Polymerium 实例在设计上天然适配 Git:

  • profile.json 是整合包的定义文件——纯 JSON,方便 diff 比较
  • import/ 包含可分发的文件——配置、资源、自定义内容
  • build/live/persist/ 是运行时产物,不应纳入版本控制

这意味着你可以将实例纳入 Git 管理,获得有意义的差异比较、分支管理和协作能力。

初始设置

  1. 在实例目录中初始化 Git 仓库:
cd instances/my-modpack
git init
  1. 创建 .gitignore
build/
live/
persist/
data.lock.json
  1. 提交初始状态:
git add profile.json import/ icon.png README.md CHANGELOG.md
git commit -m "Initial modpack"

应该跟踪什么

文件跟踪?原因
profile.json整合包定义文件——版本、加载器、模组列表
import/可分发文件(配置、资源)
图标 / README / CHANGELOG整合包元数据
build/构建产物,可复现
live/工作副本,个人使用
persist/玩家数据(存档、截图)
data.lock.json部署缓存,自动生成

开发工作流

迭代配置

  1. 启动游戏并在游戏内修改设置。
  2. 修改保存在 live/ 中。
  3. 打开工作区查看差异。
  4. 将确认的修改同步到 import/
  5. 提交:
git add import/
git commit -m "Tweak performance configs"

添加/移除模组

  1. 在 Polymerium 的 Setup 标签页中添加或移除模组。
  2. profile.json 会自动更新。
  3. 提交:
git add profile.json
git commit -m "Add Sodium and Lithium"

切换分支

你可以使用 Git 分支来管理实验性的整合包版本:

git checkout -b experiment/new-loader
# 在 Polymerium 中更换加载器、添加/移除模组
git add profile.json import/
git commit -m "Switch to NeoForge"
# 测试...
git checkout main  # 回到稳定版本

协作

与合著者共享

  1. 将仓库推送到共享远程仓库(GitHub、GitLab 等)。
  2. 合著者将仓库克隆到他们的 instances/ 目录中。
  3. 每个人的 live/persist/ 都是本地的且不被跟踪。
  4. 通过常规 Git 工作流在 profile.jsonimport/ 上协作。

发布发行版

  1. 打标签发布:
git tag v1.2.0
git push origin v1.2.0
  1. 使用 Polymerium 的导出功能导出实例。
  2. 将导出的整合包上传到 CurseForge、Modrinth 或两者。

使用 CLI 自动化导出

你可以跳过 GUI,使用 Trident CLI 从命令行导出:

trident instance export my-modpack --format modrinth --output ./releases/

这在 CI/CD 管道中非常好用。例如,当你推送标签时自动触发构建和导出:

# .github/workflows/release.yml(简化版)
on:
  push:
    tags: ['v*']
steps:
  - uses: actions/checkout@v4
  - run: trident instance export my-modpack --format modrinth --output ./releases/
  - # 将 ./releases/* 上传到 Modrinth / CurseForge

完整 CI/CD 示例请参阅无头服务器指南

提示

  • 在执行 Git 操作前关闭 Polymerium——Polymerium 可能正在监视 profile.json 的变化。退出后执行 Git 操作,然后再重新打开。
  • 不要手动编辑 profile.json 来更改版本——更安全的做法是创建新实例并迁移包。
  • 使用工作区作为你的暂存区——它专为 live/import/ 流程而设计。

目录