1 个不稳定版本
0.3.0 | 2021 年 7 月 17 日 |
---|
#371 in 构建工具
24KB
432 代码行
dotnet-gitversion 用于 Rust 构建
本项目提供了一个构建时包装器,用于 GitTools/GitVersion,它将当前仓库状态中获取的语义版本信息嵌入。
先决条件
此库需要安装 .NET 运行时(例如 .NET 5)和全局安装的 GitVersion.Tool 包,例如。
$ dotnet tool install --global GitVersion.Tool --version 5.6.10
您可以通过调用以下内容来验证安装:
$ dotnet gitversion
$ dotnet-gitversion
请注意,您的仓库可能需要 GitVersion.yml
配置文件。请参阅此项目的 GitVersion.yml 以获取示例。
用法
将 dotnet-gitversion
添加到您的构建依赖项
[build-dependencies]
dotnet-gitversion-build = { git = "https://github.com/sunsided/dotnet-gitversion-rs" }
创建或更新您的 build.rs
以调用 dotnet_gitversion_build::build()
。此方法填充了各种 GITVERSION_
环境变量,供 env!
宏使用,在 OUT_DIR
目录中创建 gitversion.rs
文件,并额外返回中间表示形式
fn main() -> Result<(), Box<dyn std::error::Error>> {
let _gv = dotnet_gitversion_build::build()?;
Ok(())
}
可以立即使用 GITVERSION_...
环境变量
fn main() {
// Use the build-generated environment variables.
println!("Info version: {}", env!("GITVERSION_INFORMATIONAL_VERSION"));
println!("Full SemVer: {}", env!("GITVERSION_FULL_SEMVER"));
}
上述代码的示例输出
Info version: 0.2.0+Branch.main.Sha.645a21e7b6358e9b72978a1b46cbd6c55a85a9af
Full SemVer: 0.2.0
包含生成的 gitversion.rs
文件后,您还可以访问静态 GIT_VERSION
常量和 GitVersion
结构体
include!(concat!(env!("OUT_DIR"), "/gitversion.rs"));
fn main() {
// Use the "global" constant.
println!("Display: {}", GIT_VERSION);
println!("Debug: {:?}", GIT_VERSION);
println!("SHA: {}", GIT_VERSION.sha);
println!("Commit: {}", GIT_VERSION.commit_date);
// The GitVersion::new() function allows you to obtain
// the struct as a constant.
const GV: GitVersion = GitVersion::new();
println!("Branch name: {}", GV.branch_name);
// Alternatively you can use the Default trait to obtain a new instance.
let gv = GitVersion::default();
println!("Short commit: {}", gv.short_sha);
}
上述代码的示例输出
Display: 0.2.0
Debug: 0.2.0+Branch.main.Sha.2e3c96c6dbd30a0ca25e51d2fb10982042670a46
SHA: 2e3c96c6dbd30a0ca25e51d2fb10982042670a46
Commit: 2021-06-20
Branch name: main
Short commit: 2e3c96c
导入的 GitVersion
结构体本身如下所示。有关字段值的信息,请参阅 GitTools/GitVersion 的文档,或运行 dotnet gitversion
。环境变量名称以 GITVERSION_
前缀开头,后跟字段名称,例如 GITVERSION_MAJOR_MINOR_PATCH
。
pub struct GitVersion {
pub major: u32,
pub minor: u32,
pub patch: u32,
pub pre_release_tag: &'static str,
pub pre_release_tag_with_dash: &'static str,
pub pre_release_label: &'static str,
pub pre_release_label_with_dash: &'static str,
pub pre_release_number: Option<u32>,
pub weighted_pre_release_number: u32,
pub build_meta_data: Option<u32>,
pub build_meta_data_padded: &'static str,
pub full_build_meta_data: &'static str,
pub major_minor_patch: &'static str,
pub semver: &'static str,
#[deprecated]
pub legacy_semver: &'static str,
#[deprecated]
pub legacy_semver_padded: &'static str,
pub assembly_semver: &'static str,
pub assembly_sem_file_version: &'static str,
pub informational_version: &'static str,
pub branch_name: &'static str,
pub escaped_branch_name: &'static str,
pub sha: &'static str,
pub short_sha: &'static str,
#[deprecated]
pub nuget_version_v2: &'static str,
#[deprecated]
pub nuget_version: &'static str,
#[deprecated]
pub nuget_prerelease_tag_v2: &'static str,
#[deprecated]
pub nuget_prerelease_tag: &'static str,
pub version_source_sha: &'static str,
pub commits_since_version_source: u32,
pub commits_since_version_source_padded: &'static str,
pub uncommitted_changes: u32,
pub commit_date: &'static str,
}
依赖项
~0.8–1.6MB
~35K SLoC