Skip to content

Commit 585a646

Browse files
committed
fix(hooks)!: Clarify failure cases
1 parent 334a32b commit 585a646

File tree

1 file changed

+30
-15
lines changed

1 file changed

+30
-15
lines changed

src/hooks.rs

Lines changed: 30 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ impl Hooks {
123123
&self,
124124
repo: &git2::Repository,
125125
changed_oids: &[(git2::Oid, git2::Oid)],
126-
) -> Result<(), std::io::Error> {
126+
) {
127127
let name = "post-rewrite";
128128
let command = "rebase";
129129
let args = [command];
@@ -133,10 +133,15 @@ impl Hooks {
133133
writeln!(stdin, "{} {}", old_oid, new_oid).expect("Always writeable");
134134
}
135135

136-
let code = self.run_hook(repo, name, &args, Some(stdin.as_bytes()), &[])?;
137-
log::trace!("Hook `{}` failed with code {}", name, code);
138-
139-
Ok(())
136+
match self.run_hook(repo, name, &args, Some(stdin.as_bytes()), &[]) {
137+
Ok(code) if code != 0 => {
138+
log::trace!("Hook `{}` failed with code {}", name, code);
139+
}
140+
Ok(_) => {}
141+
Err(err) => {
142+
log::trace!("Hook `{}` failed with {}", name, err);
143+
}
144+
}
140145
}
141146

142147
/// Run `reference-transaction` hook to signal that all reference updates have been queued to the transaction.
@@ -187,7 +192,7 @@ impl Hooks {
187192
&self,
188193
repo: &git2::Repository,
189194
changed_refs: &[(git2::Oid, git2::Oid, &str)],
190-
) -> Result<(), std::io::Error> {
195+
) {
191196
let name = "reference-transaction";
192197
let state = "committed";
193198
let args = [state];
@@ -197,10 +202,15 @@ impl Hooks {
197202
writeln!(stdin, "{} {} {}", old_oid, new_oid, ref_name).expect("Always writeable");
198203
}
199204

200-
let code = self.run_hook(repo, name, &args, Some(stdin.as_bytes()), &[])?;
201-
log::trace!("Hook `{}` failed with code {}", name, code);
202-
203-
Ok(())
205+
match self.run_hook(repo, name, &args, Some(stdin.as_bytes()), &[]) {
206+
Ok(code) if code != 0 => {
207+
log::trace!("Hook `{}` failed with code {}", name, code);
208+
}
209+
Ok(_) => {}
210+
Err(err) => {
211+
log::trace!("Hook `{}` failed with {}", name, err);
212+
}
213+
}
204214
}
205215

206216
/// Run `reference-transaction` hook to signal that no changes have been made
@@ -213,7 +223,7 @@ impl Hooks {
213223
&self,
214224
repo: &git2::Repository,
215225
changed_refs: &[(git2::Oid, git2::Oid, &str)],
216-
) -> Result<(), std::io::Error> {
226+
) {
217227
let name = "reference-transaction";
218228
let state = "aborted";
219229
let args = [state];
@@ -223,10 +233,15 @@ impl Hooks {
223233
writeln!(stdin, "{} {} {}", old_oid, new_oid, ref_name).expect("Always writeable");
224234
}
225235

226-
let code = self.run_hook(repo, name, &args, Some(stdin.as_bytes()), &[])?;
227-
log::trace!("Hook `{}` failed with code {}", name, code);
228-
229-
Ok(())
236+
match self.run_hook(repo, name, &args, Some(stdin.as_bytes()), &[]) {
237+
Ok(code) if code != 0 => {
238+
log::trace!("Hook `{}` failed with code {}", name, code);
239+
}
240+
Ok(_) => {}
241+
Err(err) => {
242+
log::trace!("Hook `{}` failed with {}", name, err);
243+
}
244+
}
230245
}
231246
}
232247

0 commit comments

Comments
 (0)