{"record":{"id":"85f1f425dc01bc29","repo":"sxyazi/yazi","slug":"listing-git-files-failed","errorCode":null,"errorMessage":"Listing Git files failed: {}","messagePattern":"Listing Git files failed: (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"yazi-cli/src/package/git.rs","lineNumber":57,"sourceCode":"\t\tif !output.status.success() {\n\t\t\tbail!(\"Getting revision failed: {}\", output.status);\n\t\t}\n\n\t\tOk(strip_trailing_newline(\n\t\t\tString::from_utf8(output.stdout).context(\"Failed to parse revision\")?,\n\t\t))\n\t}\n\n\tasync fn materialize(path: &Path) -> Result<()> {\n\t\tlet path = fs::canonicalize(path).await.context(\"Failed to resolve Git repository\")?;\n\t\tlet output = Command::new(\"git\")\n\t\t\t.args([\"ls-files\", \"--stage\", \"-z\"])\n\t\t\t.current_dir(&path)\n\t\t\t.output()\n\t\t\t.await\n\t\t\t.context(\"Failed to list Git files\")?;\n\t\tif !output.status.success() {\n\t\t\tbail!(\"Listing Git files failed: {}\", output.status);\n\t\t}\n\n\t\tfor ent in output.stdout.split(|&c| c == 0).filter(|b| !b.is_empty()) {\n\t\t\tif !ent.starts_with(b\"120000 \") {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tlet Some(tab) = ent.iter().position(|&b| b == b'\\t') else { continue };\n\t\t\tlet link = path.join(\n\t\t\t\tPath::from_wtf8(&ent[tab + 1..]).context(\"Git path cannot be represented by the OS\")?,\n\t\t\t);\n\n\t\t\tlet is_symlink = fs::symlink_metadata(&link).await?.file_type().is_symlink();\n\t\t\tlet original = if is_symlink {\n\t\t\t\tfs::read_link(&link).await? // TODO: compat for old caches, remove in the future\n\t\t\t} else {\n\t\t\t\tPathBuf::from_wtf8_vec(fs::read(&link).await?)\n\t\t\t\t\t.context(\"Git symlink origin cannot be represented by the OS\")?","sourceCodeStart":39,"sourceCodeEnd":75,"githubUrl":"https://github.com/sxyazi/yazi/blob/5f901b886b14de1f17460b6e52e9de5d67f8aba9/yazi-cli/src/package/git.rs#L39-L75","documentation":"The `git ls-files --stage -z` subprocess run on the canonicalized package path exited non-zero. The spawn itself succeeded (a spawn failure yields the `Failed to list Git files` context error), so git refused to list files — usually because the directory is not a valid work tree or the index is damaged.","triggerScenarios":"Thrown at yazi-cli/src/package/git.rs:57 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Verify the package directory is a git checkout with an index.","Run `git ls-files --stage` there manually to see the underlying git error.","Delete and re-fetch the package if its repository state is broken."],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"5f901b886b14de1f17460b6e52e9de5d67f8aba9","analyzedAt":"2026-09-02T18:38:25.566Z","contentChangedAt":"2026-09-02T18:38:25.566Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}