{"record":{"id":"0dde09b1526dc2f1","repo":"GitoxideLabs/gitoxide","slug":"only-human-format-is-supported-right-now-0dde09","errorCode":null,"errorMessage":"Only human format is supported right now","messagePattern":"Only human format is supported right now","errorType":"exception","errorClass":"anyhow::Error","httpStatus":null,"severity":"info","filePath":"gitoxide-core/src/repository/status.rs","lineNumber":66,"sourceCode":"    repo: gix::Repository,\n    pathspecs: Vec<BString>,\n    mut out: impl std::io::Write,\n    mut err: impl std::io::Write,\n    mut progress: impl gix::NestedProgress + 'static,\n    Options {\n        ignored,\n        format,\n        output_format,\n        submodules,\n        thread_limit,\n        allow_write,\n        statistics,\n        index_worktree_renames,\n        untracked,\n    }: Options,\n) -> anyhow::Result<()> {\n    if output_format != OutputFormat::Human {\n        bail!(\"Only human format is supported right now\");\n    }\n    if !matches!(format, Format::Simplified) {\n        bail!(\"Only the simplified format is currently implemented\");\n    }\n\n    let start = std::time::Instant::now();\n    let prefix = repo.prefix()?.unwrap_or(Path::new(\"\"));\n    let index_progress = progress.add_child(\"traverse index\");\n    let mut status = repo\n        .status(index_progress)?\n        .should_interrupt_shared(&gix::interrupt::IS_INTERRUPTED);\n    if let Some(untracked) = untracked {\n        status = status.untracked_files(untracked);\n    }\n    let mut iter = status\n        .index_worktree_options_mut(|opts| {\n            if let Some((opts, ignored)) = opts.dirwalk_options.as_mut().zip(ignored) {\n                opts.set_emit_ignored(Some(match ignored {","sourceCodeStart":48,"sourceCodeEnd":84,"githubUrl":"https://github.com/GitoxideLabs/gitoxide/blob/e73179060badf27222d790981fac3f84c1830a7e/gitoxide-core/src/repository/status.rs#L48-L84","documentation":"`gix status show` rejects any output format other than Human, bailing before computing status. JSON (serde) output for status is not implemented yet in gitoxide-core, so the flag is explicitly refused up front.","triggerScenarios":"Calling `gix status show --format json` (or any non-Human OutputFormat) — the first check in `show` (gitoxide-core/src/repository/status.rs) fails immediately.","commonSituations":"Automation expecting machine-readable status; users familiar with `git status --porcelain` looking for a JSON equivalent; mixed CLI habits from other gix subcommands that do support JSON.","solutions":["Use the default human output","Parse the simplified human format in your tooling as a stopgap","Use `git status --porcelain` if a stable machine format is required","Track gitoxide releases for status JSON support"],"exampleFix":"// before\ngix status show --format json\n// after\ngix status show","handlingStrategy":"validation","validationCode":"[ \"$fmt\" = \"human\" ] || { echo \"status show supports only human output\" >&2; exit 2; }","typeGuard":null,"tryCatchPattern":"if ! gix status show --format json 2>err.log; then\n  grep -q 'Only human format' err.log && gix status show\nfi","preventionTips":["Check --help before assuming JSON for any gix subcommand","Use git status --porcelain where a machine format is needed","Fallback to human output in wrappers when format flags are rejected","Follow gitoxide changelogs for status JSON support"],"tags":["cli","json","not-implemented","status"],"backgroundTag":"unsupported-operation","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"}