1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
use git2::Repository; use std::env; use std::error::Error; pub fn latest_commit() -> Result<String, Box<dyn Error>> { let path = env::current_dir()?; let repo = Repository::discover(path)?; let revspec = repo.revparse("HEAD")?; if revspec.mode().contains(git2::RevparseMode::SINGLE) { if let Some(c) = revspec.from() { return Ok(c.id().to_string()); } } Err("no rev")? }