git_wrapper/
x.rs

1use crate::Repository;
2use posix_errors::PosixError;
3
4/// # Errors
5///
6/// Returns an error when git reset --hard fails
7#[inline]
8pub fn reset_hard(repo: &Repository, sha: &str) -> Result<(), PosixError> {
9    let mut cmd = repo.git();
10    let out = cmd
11        .args(&["reset", "--hard", "--quiet", sha])
12        .output()
13        .expect("Failed to execute git-reset(1)");
14
15    if !out.status.success() {
16        let message = String::from_utf8_lossy(&out.stderr).to_string();
17        let code = out.status.code().unwrap_or(1);
18        return Err(PosixError::new(code, message));
19    }
20    Ok(())
21}