1use crate::Repository;
2use posix_errors::PosixError;
3
4#[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}