fix(#2560): kill_on_drop for git + nix children so timeouts don't orphan

This commit is contained in:
damocles 2026-07-17 15:04:33 +02:00
commit 40cf7f29de
2 changed files with 12 additions and 1 deletions

View file

@ -47,10 +47,17 @@ pub(super) async fn git_commit(dir: &Path, message: &str) -> Result<()> {
/// Spawn `git` honoring the `HYPERHIVE_GIT` env var (absolute path baked in
/// by the NixOS module), falling back to bare `git` (PATH lookup) otherwise.
///
/// `kill_on_drop(true)`: if the caller's future is dropped before the child
/// exits — e.g. a `tokio::time::timeout` around startup migration fires — the
/// git child is killed instead of orphaned (left retrying an unreachable
/// forge). No-op on normal completion, where the child has already exited.
#[must_use]
pub fn git_command() -> Command {
let exe = std::env::var("HYPERHIVE_GIT").unwrap_or_else(|_| "git".into());
Command::new(exe)
let mut cmd = Command::new(exe);
cmd.kill_on_drop(true);
cmd
}
pub async fn git(dir: &Path, args: &[&str]) -> Result<()> {