{"record":{"id":"3c49a4231cababaa","repo":"Hmbown/CodeWhale","slug":"failed-to-run-git-diff-is-git-installed-e","errorCode":null,"errorMessage":"Failed to run git diff. Is git installed? ({e})","messagePattern":"Failed to run git diff\\. Is git installed\\? \\((.+?)\\)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/tui/src/lib.rs","lineNumber":8275,"sourceCode":"}\n\nfn collect_diff(args: &ReviewArgs) -> Result<String> {\n    let mut cmd = crate::dependencies::Git::command()\n        .ok_or_else(|| anyhow::anyhow!(\"git not found on PATH\"))?;\n    cmd.arg(\"diff\");\n    if args.staged {\n        cmd.arg(\"--cached\");\n    }\n    if let Some(base) = &args.base {\n        cmd.arg(format!(\"{base}...HEAD\"));\n    }\n    if let Some(path) = &args.path {\n        cmd.arg(\"--\").arg(path);\n    }\n\n    let output = cmd\n        .output()\n        .map_err(|e| anyhow::anyhow!(\"Failed to run git diff. Is git installed? ({e})\"))?;\n    if !output.status.success() {\n        let stderr = String::from_utf8_lossy(&output.stderr);\n        bail!(\"git diff failed: {}\", stderr.trim());\n    }\n    let mut diff = String::from_utf8_lossy(&output.stdout).to_string();\n    if diff.len() > args.max_chars {\n        diff = crate::utils::truncate_with_ellipsis(&diff, args.max_chars, \"\\n...[truncated]\\n\");\n    }\n    Ok(diff)\n}\n\nfn review_target_label(args: &ReviewArgs) -> String {\n    let mut label = if args.staged {\n        \"staged\".to_string()\n    } else if let Some(base) = args\n        .base\n        .as_deref()\n        .map(str::trim)","sourceCodeStart":8257,"sourceCodeEnd":8293,"githubUrl":"https://github.com/Hmbown/CodeWhale/blob/8880682c63083a91624de936797efa3ce9e498fd/crates/tui/src/lib.rs#L8257-L8293","documentation":"Error \"Failed to run git diff. Is git installed? ({e})\" thrown in Hmbown/CodeWhale.","triggerScenarios":"Thrown at crates/tui/src/lib.rs:8275 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"8880682c63083a91624de936797efa3ce9e498fd","analyzedAt":"2026-08-16T11:31:27.956Z","schemaVersion":2},"datasetVersion":"2026-08-16T13:17:31.715Z"}