huskies: merge 1155 story Bracket logging around install_pre_commit_hook to diagnose bug 1151 freezes
This commit is contained in:
@@ -130,11 +130,20 @@ pub(crate) async fn on_coding_transition(project_root: &Path, port: u16, story_i
|
|||||||
info.path.display()
|
info.path.display()
|
||||||
);
|
);
|
||||||
let hook_path = info.path.clone();
|
let hook_path = info.path.clone();
|
||||||
|
slog!("[worktree] starting pre-commit hook install for '{story_id}'");
|
||||||
let hook_result = tokio::task::spawn_blocking(move || {
|
let hook_result = tokio::task::spawn_blocking(move || {
|
||||||
crate::worktree::install_pre_commit_hook(&hook_path)
|
crate::worktree::install_pre_commit_hook(&hook_path)
|
||||||
})
|
})
|
||||||
.await
|
.await
|
||||||
.unwrap_or_else(|e| Err(format!("spawn_blocking panicked: {e}")));
|
.unwrap_or_else(|e| Err(format!("spawn_blocking panicked: {e}")));
|
||||||
|
match &hook_result {
|
||||||
|
Ok(()) => {
|
||||||
|
slog!("[worktree] finished pre-commit hook install for '{story_id}' result=ok")
|
||||||
|
}
|
||||||
|
Err(e) => slog!(
|
||||||
|
"[worktree] finished pre-commit hook install for '{story_id}' result=err: {e}"
|
||||||
|
),
|
||||||
|
}
|
||||||
if let Err(e) = hook_result {
|
if let Err(e) = hook_result {
|
||||||
slog_warn!(
|
slog_warn!(
|
||||||
"[worktree-create-sub] Pre-commit hook install failed for '{story_id}': {e}"
|
"[worktree-create-sub] Pre-commit hook install failed for '{story_id}': {e}"
|
||||||
|
|||||||
@@ -163,12 +163,21 @@ pub fn install_pre_commit_hook(wt_path: &Path) -> Result<(), String> {
|
|||||||
|
|
||||||
// Point git at the per-worktree hooks dir so only this worktree uses
|
// Point git at the per-worktree hooks dir so only this worktree uses
|
||||||
// these hooks (not the main repo or other worktrees).
|
// these hooks (not the main repo or other worktrees).
|
||||||
|
slog!(
|
||||||
|
"[worktree-hook] starting git config --worktree core.hooksPath for '{}'",
|
||||||
|
wt_path.display()
|
||||||
|
);
|
||||||
let output = std::process::Command::new("git")
|
let output = std::process::Command::new("git")
|
||||||
.args(["config", "--worktree", "core.hooksPath", ".git-hooks"])
|
.args(["config", "--worktree", "core.hooksPath", ".git-hooks"])
|
||||||
.current_dir(wt_path)
|
.current_dir(wt_path)
|
||||||
.output()
|
.output()
|
||||||
.map_err(|e| format!("git config --worktree core.hooksPath: {e}"))?;
|
.map_err(|e| format!("git config --worktree core.hooksPath: {e}"))?;
|
||||||
|
|
||||||
|
slog!(
|
||||||
|
"[worktree-hook] finished git config --worktree core.hooksPath for '{}' status={}",
|
||||||
|
wt_path.display(),
|
||||||
|
output.status
|
||||||
|
);
|
||||||
if !output.status.success() {
|
if !output.status.success() {
|
||||||
let stderr = String::from_utf8_lossy(&output.stderr);
|
let stderr = String::from_utf8_lossy(&output.stderr);
|
||||||
return Err(format!(
|
return Err(format!(
|
||||||
|
|||||||
Reference in New Issue
Block a user