GitoxideLabs/gitoxide · info · anyhow::Error

Only the simplified format is currently implemented

Error message

Only the simplified format is currently implemented

What it means

Beyond the format check, `gix status show` only implements the `Format::Simplified` status rendering; other format variants (richer/more detailed layouts) bail with this message. The command's output-style flag is validated up front so unsupported combinations never half-run.

Solutions

  1. Omit the format flag (Simplified is the default) or pass the simplified variant explicitly
  2. Check `gix status show --help` for which formats exist
  3. Implement or request the additional status format upstream
  4. Use `git status` for long-form status output

Example fix

// before
gix status show --format detailed
// after
gix status show
Defensive patterns

Strategy: validation

Validate before calling

# only 'simplified' is implemented
case "$status_format" in ""|simplified) ;; *) echo "unsupported status format: $status_format" >&2; exit 2;; esac

Try / catch

if ! gix status show --format "$f" 2>err.log; then
  grep -q 'simplified format' err.log && gix status show
fi

Prevention

When it happens

Trigger: Calling `gix status show --format <not-simplified>` — i.e. any Format value other than `Format::Simplified` — even with human output format selected.

Common situations: Users trying detailed/verbose status styles mirroring `git status` long format; scripts reusing a format flag value valid elsewhere; docs mismatch after option changes.

Related errors


AI-assisted analysis of GitoxideLabs/gitoxide@e73179060b (2026-09-08). Data as JSON: /api/errors/ad68e6627ebd6760. Report an issue: GitHub.

Appendix: source

Thrown at gitoxide-core/src/repository/status.rs:69

    mut err: impl std::io::Write,
    mut progress: impl gix::NestedProgress + 'static,
    Options {
        ignored,
        format,
        output_format,
        submodules,
        thread_limit,
        allow_write,
        statistics,
        index_worktree_renames,
        untracked,
    }: Options,
) -> anyhow::Result<()> {
    if output_format != OutputFormat::Human {
        bail!("Only human format is supported right now");
    }
    if !matches!(format, Format::Simplified) {
        bail!("Only the simplified format is currently implemented");
    }

    let start = std::time::Instant::now();
    let prefix = repo.prefix()?.unwrap_or(Path::new(""));
    let index_progress = progress.add_child("traverse index");
    let mut status = repo
        .status(index_progress)?
        .should_interrupt_shared(&gix::interrupt::IS_INTERRUPTED);
    if let Some(untracked) = untracked {
        status = status.untracked_files(untracked);
    }
    let mut iter = status
        .index_worktree_options_mut(|opts| {
            if let Some((opts, ignored)) = opts.dirwalk_options.as_mut().zip(ignored) {
                opts.set_emit_ignored(Some(match ignored {
                    Ignored::Collapsed => gix::dir::walk::EmissionMode::CollapseDirectory,
                    Ignored::Matching => gix::dir::walk::EmissionMode::Matching,
                }));

View on GitHub (pinned to e73179060b)