我在盖特存放处主办一个Rust项目,我希望将其印刷成一些指挥部。 我如何将这一版本纳入该方案? 我认为,建筑文字可以确定环境变量,在汇编项目本身时可以使用这些变量,但并不可行:
<>strong>build.rs:
use std::env;
fn get_git_hash() -> Option<String> {
use std::process::Command;
let branch = Command::new("git")
.arg("rev-parse")
.arg("--abbrev-ref")
.arg("HEAD")
.output();
if let Ok(branch_output) = branch {
let branch_string = String::from_utf8_lossy(&branch_output.stdout);
let commit = Command::new("git")
.arg("rev-parse")
.arg("--verify")
.arg("HEAD")
.output();
if let Ok(commit_output) = commit {
let commit_string = String::from_utf8_lossy(&commit_output.stdout);
return Some(format!("{}, {}",
branch_string.lines().next().unwrap_or(""),
commit_string.lines().next().unwrap_or("")))
} else {
panic!("Can not get git commit: {}", commit_output.unwrap_err());
}
} else {
panic!("Can not get git branch: {}", branch.unwrap_err());
}
None
}
fn main() {
if let Some(git) = get_git_hash() {
env::set_var("GIT_HASH", git);
}
}
<>src/main.rs:
pub const GIT_HASH: & static str = env!("GIT_HASH");
fm main() {
println!("Git hash: {}", GIT_HASH);
}
错误信息:
error: environment variable `GIT_HASH` not defined
--> src/main.rs:10:25
|
10 | pub const GIT_HASH: & static str = env!("GIT_HASH");
|
^^^^^^^^^^^^^^^^
是否有办法在汇编时间通过这些数据? 如果没有环境变量,我如何在建筑文字与源代码之间沟通? 我只能想到向某些档案撰写数据,但我认为,这个案件过于熟练。