版本號

你的插件应当有一个独一无二的版本号,这样其他人在下载时就可以判断哪个是新版哪个是旧版。你可以在当前流行的多种版本号规范中选一个来用。下文中将讨论这些不同规范之间的优势与劣势。

Sponge 推荐使用用 . 分割的 2~3 个数字,及连字符 - 连接的标签作为版本号,比如 3.1 或者 1.0.3-API7,这样的版本号看起来和 SemVer 相近。你的插件准备好发布的时候,版本号应从 1.x 开始。如果你的插件还很不稳定,或者没有准备发布,应从 0.x 开始。

備註

尽管 Sponge 推荐使用上述的版本号方案,但插件作者可以使用任何一种方案。惟需注意,用户可能需要面对各种五花八门的版本号,所以还请使用简单的版本号方案。

語意化版本(SemVer)

语义化版本(SemVer) 是一种常用的语义化版本号规范。它由三个由点(.)分割的数字部分,及由连字符(-)连接的额外标签组成。三个数字部分分别是 MAJORMINORPATCH 版本号。

  • MAJOR 版本号变更代表你对 API 进行了不兼容的改动。大规模重写,或完全重写整个插件也算入此列。

  • MINOR 版本号的变更代表你新增了某种功能,但仍然保持了向后兼容。

  • PATCH 版本号变更代表你进行了 bug 修复。

标签可用于标记预发布版本,或用来标记构建的元数据,比如支持的 Minecraft 版本这样的信息。如果某一个版本数字递增了 1,那么其后面的部分都应重置为 0。使用这套策略你可以判断哪一个版本是最新的版本,但它并不能透露任何关于发布时间的信息,比如 1.0.9 版本可能会在 1.0.8 版本之后发布,但此时 1.1.0 版本可能在这之前或之后发布,甚至是与 1.0.9 版本同时发布。

備註

SpongeAPI 使用此軟體版本編號訂定方法。

範例

  • 0.1.0

  • 1.0.0

  • 1.1.0-SNAPSHOT

  • 3.12.21-API7

優點

  • 易於閱讀和理解

缺點

  • 这套规范是 API 导向的;如果你的插件根本不提供 API,这套规范并不好使。

時間戳(Timestamp)

这是一种少见的版本号规范,但也是一种非常简单的规范,因为它不包含任何多余信息。分隔符的选择、包含的时间与日期范围也没有限制。然而,我们建议你使用形如 YYYY-MM-DD 的形式。如果你按照字母顺序对文件排序,请确认排序后的结果和版本号顺序一致。版本号后可以包括构建类型或构建号。

範例

  • 18.01.31

  • v2018-05-29.1

  • 2018.01.13-SNAPHOT

優點

  • 易於閱讀和理解

缺點

  • 不包含任何关于兼容性的信息。

其他

关于软件版本号和版本号规范的更多内容可通过这里 <https://en.wikipedia.org/wiki/Software_versioning>了解。