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")?
}