5 releases
| 0.1.4 | Oct 12, 2025 |
|---|---|
| 0.1.3 | Jan 6, 2023 |
| 0.1.2 | Jan 3, 2023 |
| 0.1.1 | Dec 24, 2022 |
| 0.1.0 | Dec 24, 2022 |
#88 in Build Utils
9,586 downloads per month
Used in 13 crates
(12 directly)
18KB
221 lines
This library provides the means for including partly opinionated git revision identifiers inside a Rust project (typically a binary). It provides a set of functions, all meant to be invoked from a build script, which inquire the current git revision being built against.
Typical usage could look like this:
use grev::git_revision_auto;
fn main() -> Result<()> {
let manifest_dir =
env::var_os("CARGO_MANIFEST_DIR").context("CARGO_MANIFEST_DIR variable not set")?;
let pkg_version = env::var("CARGO_PKG_VERSION").context("CARGO_PKG_VERSION variable not set")?;
if let Some(git_rev) = git_revision_auto(manifest_dir)? {
println!("cargo:rustc-env=VERSION={pkg_version} ({git_rev})");
} else {
println!("cargo:rustc-env=VERSION={pkg_version}");
}
Ok(())
}
This logic, contained in a Cargo build script (typically build.rs,
located in a project's root), will cause the environment variable
VERSION to be set unconditionally when building the program. It
will contain the package version and, if available, the git revision
at which the build happened (including a modifier indicating if
local changes were present). If building at a git tag, the revision
string will include this tag. The main program would then inquire
the version string using env!("VERSION").
grev
A crate for working with git revision information from a build script.
Dependencies
~140KB