{"record":{"id":"88f4c6c7abd2b50a","repo":"GitoxideLabs/gitoxide","slug":"json-output-isn-t-implemented-yet-88f4c6","errorCode":null,"errorMessage":"JSON output isn't implemented yet","messagePattern":"JSON output isn't implemented yet","errorType":"exception","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"gitoxide-core/src/repository/merge/commit.rs","lineNumber":28,"sourceCode":"\npub fn commit(\n    mut repo: gix::Repository,\n    out: &mut dyn std::io::Write,\n    err: &mut dyn std::io::Write,\n    ours: BString,\n    theirs: BString,\n    Options {\n        format,\n        file_favor,\n        tree_favor,\n        in_memory,\n        debug,\n        message: _,\n        update_head: _,\n    }: Options,\n) -> anyhow::Result<()> {\n    if format != OutputFormat::Human {\n        bail!(\"JSON output isn't implemented yet\");\n    }\n    repo.object_cache_size_if_unset(repo.compute_object_cache_size_for_tree_diffs(&**repo.index_or_empty()?));\n    if in_memory {\n        repo.objects.enable_object_memory();\n    }\n    let (ours_ref, ours_id) = refname_and_commit(&repo, ours)?;\n    let (theirs_ref, theirs_id) = refname_and_commit(&repo, theirs)?;\n\n    let options = repo\n        .tree_merge_options()?\n        .with_file_favor(file_favor)\n        .with_tree_favor(tree_favor);\n    let ours_id_str = ours_id.to_string();\n    let theirs_id_str = theirs_id.to_string();\n    let labels = gix::merge::blob::builtin_driver::text::Labels {\n        ancestor: None,\n        current: ours_ref\n            .as_ref()","sourceCodeStart":10,"sourceCodeEnd":46,"githubUrl":"https://github.com/GitoxideLabs/gitoxide/blob/e73179060badf27222d790981fac3f84c1830a7e/gitoxide-core/src/repository/merge/commit.rs#L10-L46","documentation":"`gix merge commit` only supports human output; requesting JSON (or any non-Human OutputFormat) raises this message before the merge begins. The JSON rendering for this subcommand is simply not implemented yet.","triggerScenarios":"Running `gix merge commit --format json ...`; the check `format != OutputFormat::Human` bails immediately, before any merge work is done.","commonSituations":"Scripted merge analysis expecting JSON output; reusing a shared `--format` flag across subcommands; automation comparing merge results programmatically.","solutions":["Use the default human output format","Capture and parse the human/JSON debug output of conflicts differently (the command writes conflict details to stderr)","Implement or await JSON support upstream in gitoxide"],"exampleFix":"// before\n$ gix merge commit --format json ours theirs\n// after\n$ gix merge commit ours theirs","handlingStrategy":"validation","validationCode":"if format != OutputFormat::Human {\n    // fall back to human output for merge commit\n}\n","typeGuard":null,"tryCatchPattern":"match result {\n    Err(e) if e.to_string().contains(\"JSON output isn't implemented\") =>\n        eprintln!(\"re-run with human output\"),\n    other => other?,\n}\n","preventionTips":["Use human output for merge commit until JSON exists","Gate --format json behind per-subcommand support checks in wrappers"],"tags":["cli","unsupported-format","json"],"backgroundTag":"unsupported-enum-value","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"}