2 个版本
0.1.2 | 2022 年 8 月 29 日 |
---|---|
0.1.1 | 2022 年 8 月 28 日 |
642 在 Cargo 插件 中
每月 21 次下载
15KB
164 行
cargo-gitv
基于 Cargo 和 Git 元数据的合理且具有偏见的版本管理。
工作原理
cargo-gitv
根据您在 Cargo.toml
中定义的版本和 Git 元数据生成与语义版本兼容的版本字符串。它支持生成发布版本和预发布版本。此外,它还支持基于纯时间戳的版本,这对于持续交付管道很有用。此外,它还提供了用于在 Cargo.toml
中提升版本的命令。
基本语义版本始终从 Cargo.toml
中获取。对于发布版本,cargo-gitv
使用 <提交时间戳>-<git sha>
作为构建元数据。这生成如下版本:1.1.0+20220715144403-90bc61e
。对于预发布版本,我们目前支持开发版本和发布候选版本。提交时间戳与预发布类型字符串一起用作标识符。这导致开发版本的版本字符串为 1.1.1-dev.20220715144403+90bc61e
,发布候选版本的版本字符串为 1.1.1-rc.20220715144403+90bc61e
。
请注意,我们使用提交时间戳而不是当前时间戳。因此,我们可以为每个提交生成稳定的版本号,因为用于组装版本号的所有信息都包含在提交中。
最后,cargo-gitv
会验证 Cargo.toml
中的版本是否大于最新发布版(开发和发布候选版)或与当前 Git 版本标签(发布版)完全匹配。其理由是,在发布时,Cargo.toml
中的版本应与用于发布的 git 标签相匹配。此外,cargo-gitv
的基础思想是版本在发布后会升级到下一个版本(甚至可能多次)。在语义版本控制中,预发布版本总是被认为在发布版本之前,例如 1.1.1-rc.20220715144403+90bc61e < 1.1.1+20220715144403+90bc61e
。我们认为预发布版本应该与稍后发布的版本号共享。请注意,在下一个发布之前可能存在几个基版本。可能从发布后立即开始使用 1.1.2
,当引入新功能时升级到 1.2.0
,当需要引入 API 变更时最终达到 2.0.0
。
用法
- 根据一系列规则计算与语义版本控制兼容的工作区版本。
- 默认计算预发布版本。
- 默认预发布标识符为
dev
。 - 默认基版本是 Cargo 版本。
- Git 版本标签是一个
v
后跟一个正常的语义版本,即满足正则表达式如^v[1-9]\d*.[1-9]\d*.[1-9]\d*$
的标签。Git 发布候选版本(rc 版本)定义为带有rc
而不是v
的发布版本。 verify
子命令可以用来检查 Cargo 版本是否与工作区版本一致。它仅比较基版本。如果没有 git 版本,验证总是成功,因为工作区版本的基版本来自 Cargo 元数据。根据调用的模式,verify 命令的行为可能不同。对于 --dev 模式,它期望 Cargo 版本大于最后一个 git 版本,因为 Cargo 版本应代表下一个发布版本(预发布版本始终被认为是小于最终发布版本的)。rc 和发布模式期望提交带有 rc 或发布版本标签,Cargo 版本与该标签匹配。
许可
许可协议为以下之一
- Apache许可证,版本2.0(LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT许可证(LICENSE-MIT 或 https://open-source.org.cn/licenses/MIT)
根据您的选择。
贡献
除非您明确声明,否则根据Apache-2.0许可证定义的,您有意提交以包含在本工作中的任何贡献,将按上述方式双许可,不附加任何额外条款或条件。
依赖项
~13MB
~317K SLoC