{"record":{"id":"aceee5a942913808","repo":"GitoxideLabs/gitoxide","slug":"the-spec-isn-t-currently-supported-spec","errorCode":null,"errorMessage":"The spec isn't currently supported: {spec:?}","messagePattern":"The spec isn't currently supported: (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"gitoxide-core/src/repository/commitgraph/list.rs","lineNumber":39,"sourceCode":"            .commit_graph_if_enabled()\n            .context(\"a commitgraph is required, but none was found\")?;\n        repo.object_cache_size_if_unset(4 * 1024 * 1024);\n        repo.objects.refresh = RefreshMode::Never;\n\n        let spec = gix::path::os_str_into_bstr(&spec)?;\n        let spec = repo.rev_parse(spec)?.detach();\n        let commits = match spec {\n            Spec::Include(id) => connected_commit_id(&repo, id)?\n                .ancestors()\n                .sorting(Sorting::ByCommitTime(Default::default()))\n                .all()?,\n            Spec::Range { from, to } => connected_commit_id(&repo, to)?\n                .ancestors()\n                .sorting(Sorting::ByCommitTime(Default::default()))\n                .with_hidden(Some(connected_commit_id(&repo, from)?))\n                .all()?,\n            Spec::Exclude(_) | Spec::Merge { .. } | Spec::IncludeOnlyParents(_) | Spec::ExcludeParents(_) => {\n                bail!(\"The spec isn't currently supported: {spec:?}\")\n            }\n        };\n        for commit in commits {\n            let commit = commit?;\n            writeln!(\n                out,\n                \"{} {} {} {}\",\n                HexId::new(commit.id(), long_hashes),\n                commit.commit_time.expect(\"traversal with date\"),\n                commit.parent_ids.len(),\n                graph\n                    .as_ref()\n                    .map_or(Cow::Borrowed(\"\"), |graph| graph.commit_by_id(commit.id).map_or_else(\n                        || Cow::Borrowed(\"<NOT IN GRAPH-CACHE>\"),\n                        |c| Cow::Owned(format!(\n                            \"{} {}\",\n                            HexId::new(c.root_tree_id().to_owned().attach(&repo), long_hashes),\n                            c.generation()","sourceCodeStart":21,"sourceCodeEnd":57,"githubUrl":"https://github.com/GitoxideLabs/gitoxide/blob/e73179060badf27222d790981fac3f84c1830a7e/gitoxide-core/src/repository/commitgraph/list.rs#L21-L57","documentation":"The given revision `Spec` parses but its kind is not implemented by `commitgraph list`. Range specs work; `Exclude`, `Merge`, `IncludeOnlyParents`, and `ExcludeParents` variants are explicitly rejected with `bail!`.","triggerScenarios":"Running `gix commitgraph list --exclude <rev>`, merge-base style specs, or programmatically passing `Spec::Exclude { .. }`, `Spec::Merge { .. }`, `Spec::IncludeOnlyParents(_)` or `Spec::ExcludeParents(_)` to `list`.","commonSituations":"Porting `git rev-list --exclude`/`--merges`/`--first-parent`-style queries to gix; scripting graph enumeration with filters git supports but gix's commitgraph list doesn't yet.","solutions":["Use a plain range spec (`from..to`) or a single rev, which are supported","Enumerate commits via `commit.ancestors()` yourself and apply the exclusion/parent filtering in your code","Track upstream for these spec kinds to be implemented"],"exampleFix":"// before\nlet spec = Spec::Exclude(head);\nlist(repo, spec, &mut out, false, format)?;\n// after\nlet spec = Spec::Range { from: base, to: head };\nlist(repo, spec, &mut out, false, format)?;","handlingStrategy":"validation","validationCode":"match spec {\n    Spec::Exclude(_) | Spec::Merge { .. } | Spec::IncludeOnlyParents(_) | Spec::ExcludeParents(_) => {\n        anyhow::bail!(\"spec kind unsupported by commitgraph list\");\n    }\n    _ => {},\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Stick to range or single-rev specs with commitgraph list","Implement exclusion filtering in your own ancestor walk when needed"],"tags":["cli","revision-spec","unimplemented-feature","commitgraph"],"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"}