背景
有时,主题/插件需要进行一些仅与最新版 Discourse 兼容的更改。在这种情况下,可以指示旧版 Discourse 使用插件的旧版“固定”版本。
这可以通过在主题/插件存储库的根目录中使用 .discourse-compatibility 文件来实现。这是一个 YAML 文件,其中键指定 Discourse 核心版本,值表示你的主题/插件的关联版本。
Discourse 核心版本可以使用 <= 和 < 运算符指定。出于历史原因,<= 是默认设置,但通常使用 < 更为合理。
固定主题/插件版本
例如,如果 Discourse 核心在 3.2.0.beta2-dev(在 version.rb 中找到)期间进行了更改,而你的插件/主题开始依赖它,那么你将向 .discourse-compatibility 文件添加一个条目,如下所示:
< 3.2.0.beta2-dev: abcde
其中 abcde 是你的插件的“旧版”提交哈希的引用,应在旧版 Discourse 上使用。
现在,任何使用旧版 Discourse(例如 3.2.0.beta1 或 3.1.4)的用户将使用你的主题/插件的 abcde 版本。任何使用 3.2.0.beta2-dev 或更高版本用户将继续使用最新版本。
多个条目
随着时间的推移,你可以向 .discourse-compatibility 文件添加多行。Discourse 将始终选择与当前 Discourse 核心版本匹配的“最低”规范。文件中的行顺序在技术上并不重要,但我们建议将最新的条目放在顶部。
为旧版 Discourse 版本“回溯移植”更改
让我们来看一个 .discourse-compatibility 文件,其中有两个不同的版本规范固定到特定的插件提交:
< 3.2.0.beta1-dev: commithashfordiscourse31
< 3.1.0.beta1-dev: commithashfordiscourse30
如果你需要为 Discourse 3.1“回溯移植”更改,你可以这样做:
-
从旧提交创建分支(
git checkout -b my_branch_name commithashfordiscourse31) -
提交你的更改并推送到 origin。如果你使用 GitHub 的分支保护功能,你可能希望保护此分支免遭意外删除。
-
在主分支上更新
.discourse-compatibility文件,使其指向 3.1 支持分支上的新提交。
实际示例
这是一个来自 discourse-solved 插件的实际 .discourse-compatibility 文件。请注意,在撰写本文时,它仍在使用“旧版”语法,没有任何显式的 < 或 <= 运算符。因此,每一行都被自动解释为 <=。
本文档受版本控制 - 在 github 上建议更改。