Add helper fn to check whether the repository WD is dirty

This commit is contained in:
Matthias Beyer 2016-09-17 18:57:46 +02:00
parent db218cb3ee
commit eb378d47c2

View file

@ -1,6 +1,6 @@
use std::path::PathBuf; use std::path::PathBuf;
use git2::Repository; use git2::{Index, Repository};
use toml::Value; use toml::Value;
use libimagerror::into::IntoError; use libimagerror::into::IntoError;
@ -154,5 +154,25 @@ impl Runtime {
.map_dbg_str("[GIT CREATE HOOK]: Branch checked out") .map_dbg_str("[GIT CREATE HOOK]: Branch checked out")
} }
/// Check whether the WD is "dirty" - whether there is a diff to the repository
/// This function returns false if there is no `Repository` object in the `Runtime`
pub fn repo_is_dirty(&self, index: &Index) -> bool {
match self.repository.as_ref() {
Some(repo) => {
repo.diff_index_to_workdir(Some(index), None)
.map_dbg_str("Fetched diff: Index <-> WD")
.map_dbg_err_str("Failed to fetch diff: Index <-> WD")
.map(|diff| diff.deltas().count() != 0)
.unwrap_or(false)
},
None => {
debug!("No repository: Cannot fetch diff: Index <-> WD");
false
}
}
}
} }