{"record":{"id":"96aa966babc3616b","repo":"GitoxideLabs/gitoxide","slug":"one-or-more-errors-occurred-checkout-is-incomple","errorCode":null,"errorMessage":"One or more errors occurred - checkout is incomplete: {}","messagePattern":"One or more errors occurred - checkout is incomplete: (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"gitoxide-core/src/index/checkout.rs","lineNumber":167,"sourceCode":"        messages.push(format!(\n            \"A delayed process provided us with {} paths we never sent to it\",\n            delayed_paths_unknown.len()\n        ));\n        for unknown in delayed_paths_unknown {\n            writeln!(err, \"{unknown}: unknown\").ok();\n        }\n    }\n    if !delayed_paths_unprocessed.is_empty() {\n        messages.push(format!(\n            \"A delayed process forgot to process {} paths\",\n            delayed_paths_unprocessed.len()\n        ));\n        for unprocessed in delayed_paths_unprocessed {\n            writeln!(err, \"{unprocessed}: unprocessed and forgotten\").ok();\n        }\n    }\n    if !messages.is_empty() {\n        bail!(\n            \"One or more errors occurred - checkout is incomplete: {}\",\n            messages.join(\", \")\n        );\n    }\n    Ok(())\n}\n\n#[derive(Clone)]\nstruct EmptyOrDb<Find> {\n    empty_files: bool,\n    db: Find,\n}\n\nimpl<Find> gix::objs::Find for EmptyOrDb<Find>\nwhere\n    Find: gix::objs::Find,\n{\n    fn try_find<'a>(&self, id: &gix::oid, buf: &'a mut Vec<u8>) -> Result<Option<gix::objs::Data<'a>>, Error> {","sourceCodeStart":149,"sourceCodeEnd":185,"githubUrl":"https://github.com/GitoxideLabs/gitoxide/blob/e73179060badf27222d790981fac3f84c1830a7e/gitoxide-core/src/index/checkout.rs#L149-L185","documentation":"Thrown at the end of an exclusive index checkout when one or more errors occurred during the checkout process. The individual error `messages` were accumulated during the operation and are joined into this final bail, signalling that the checkout is incomplete and should not be treated as successful.","triggerScenarios":"Running `checkout_exclusive` when the underlying checkout encounters per-path errors (e.g. delayed filter/checkout paths that were unprocessed, IO problems writing files) which are collected into `messages`.","commonSituations":"Checkout interrupted by IO errors; git-filter (clean/smudge) or driver processes failing or being delayed and not completing; filesystem issues like permissions or full disks during worktree materialization.","solutions":["Read the joined `messages` in the error to identify which paths failed and why","Fix the underlying cause (permissions, disk space, failing filters) and re-run the checkout into a clean destination","Disable or fix problematic content filters/drivers that delay path processing","Retry the checkout after resolving; verify completeness afterwards"],"exampleFix":"// before\ngix repo checkout-exclusive --destination ./wt   # fails with checkout incomplete\n// after\n# fix the reported path issue, then:\nrm -rf ./wt\ngix repo checkout-exclusive --destination ./wt","handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"if let Err(e) = checkout_exclusive(/* args */) {\n    // aggregated messages are in the Display of the error\n    for msg in e.to_string().split(\", \") {\n        eprintln!(\"failed: {msg}\");\n    }\n}","preventionTips":["Ensure filters/drivers are functioning before checkout","Check disk space and permissions preemptively","Re-run checkout into a clean directory after failures"],"tags":["git","checkout","io","partial-failure"],"backgroundTag":"git-command-failed","analyzedSha":"e73179060badf27222d790981fac3f84c1830a7e","analyzedAt":"2026-09-08T11:26:50.865Z","contentChangedAt":"2026-09-08T11:26:50.865Z","schemaVersion":2},"datasetVersion":"2026-09-16T04:17:20.429Z"}