13 个版本
0.2.5 | 2023 年 9 月 20 日 |
---|---|
0.2.4 | 2023 年 1 月 18 日 |
0.2.2 | 2022 年 12 月 30 日 |
0.2.1 | 2021 年 11 月 8 日 |
0.1.6 | 2019 年 5 月 7 日 |
#27 in 构建工具
8,613 每月下载量
被 33 个 crate (17 直接) 使用
22KB
219 行
Git Testament
git-testament
是一个库,用于在构建 Rust 程序时嵌入对 git 工作树状态的证明。它使用过程宏的强大功能,在构建程序时将提交、标签和工作树状态信息嵌入到程序中。这可以用于报告版本信息。
use git_testament::{git_testament, render_testament};
git_testament!(TESTAMENT);
fn main() {
println!("My version information: {}", render_testament!(TESTAMENT));
}
可重复构建
如果你的构建不是从 Git 仓库完成的,你仍然希望你的证明对用户有用。在这种情况下,二进制文件的可重复性至关重要。可重复构建团队定义了一种机制,称为 可重复构建,该机制通过一个环境变量 SOURCE_DATE_EPOCH
实现,该变量可以设置以确保构建日期固定,以实现可重复性。如果你没有仓库(或仓库但没有提交),则 git_testament!()
将使用 SOURCE_DATE_EPOCH
环境变量(如果存在且可解析为自 UNIX 纪元以来的秒数)来覆盖 now
。
在 no_std
场景中的应用
此crate不链接到标准库中的任何内容,但默认情况下依赖于alloc
库可用。禁用alloc
特性允许crate在no_std
环境中工作,在这些环境中alloc
库不可用。尽管如此,您仍然可以生成GitTestament
结构体,但与之合作会更加困难。在这种情况下,建议使用git_testament_macros!()
宏,它提供了一组生成字符串常量的宏。这虽然不太灵活/强大,但有时在这些情况下更容易使用。
依赖关系
~1–1.6MB
~33K SLoC