#git-commit #build #git-version #tree #record #information #proc-macro

no-std build git-testament

在编译你的 crate 时记录 git 工作树状态

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 构建工具

Download history 1811/week @ 2024-03-14 1895/week @ 2024-03-21 1723/week @ 2024-03-28 1781/week @ 2024-04-04 2077/week @ 2024-04-11 2207/week @ 2024-04-18 1840/week @ 2024-04-25 2033/week @ 2024-05-02 1914/week @ 2024-05-09 2198/week @ 2024-05-16 2001/week @ 2024-05-23 2372/week @ 2024-05-30 2065/week @ 2024-06-06 2075/week @ 2024-06-13 2356/week @ 2024-06-20 1825/week @ 2024-06-27

8,613 每月下载量
33 个 crate (17 直接) 使用

BSD-3-Clause

22KB
219

Git Testament

BSD 3 Clause Main build status Latest docs Crates.IO

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