GitoxideLabs/gitoxide · error · anyhow::Error
Only human output is supported right now
Error message
Only human output is supported right now
What it means
The `gix mailmap check` command only supports human-readable output; requesting any other `--format` (e.g. JSON) raises this message before any mailmap processing happens. It is an explicit capability gate on the output format.
Solutions
- Omit `--format` or use the default human output
- Parse the human output if machine consumption is needed temporarily
- Post-process the human output or request JSON support upstream
Example fix
// before $ gix mailmap check --format json <contacts> // after $ gix mailmap check <contacts>
Defensive patterns
Strategy: validation
Validate before calling
let fmt: OutputFormat = parse_format(args.format);
if fmt != OutputFormat::Human {
// switch to Human or use another tool
}
Try / catch
match result {
Err(e) if e.to_string().contains("Only human output is supported") =>
eprintln!("re-run without --format"),
other => other?,
}
Prevention
- Assume only human output until JSON lands for mailmap check
- Don't share a global --format flag across subcommands blindly
When it happens
Trigger: Running `gix mailmap check --format json` (or any non-Human OutputFormat); the check function compares `format != OutputFormat::Human` and bails immediately.
Common situations: Scripting mailmap checks and expecting machine-readable output; piping results into a JSON consumer; assuming format options are shared across all gitoxide subcommands.
Related errors
- JSON output isn't implemented yet
- JSON output isn't implemented yet
- JSON output isn't implemented yet
- JSON output isn't supported
- JSON output isn't implemented yet
AI-assisted analysis of GitoxideLabs/gitoxide@e73179060b (2026-09-08).
Data as JSON: /api/errors/0ca47e534ffd6e70.
Report an issue: GitHub.
Appendix: source
Thrown at gitoxide-core/src/repository/mailmap.rs:61
if let Err(e) = repo.open_mailmap_into(&mut mailmap) {
writeln!(err, "Error while loading mailmap, the first error is: {e}").ok();
}
#[cfg(feature = "serde")]
serde_json::to_writer_pretty(out, &mailmap.iter().map(JsonEntry::from).collect::<Vec<_>>())?;
Ok(())
}
pub fn check(
repo: gix::Repository,
format: OutputFormat,
contacts: Vec<BString>,
mut out: impl io::Write,
mut err: impl io::Write,
) -> anyhow::Result<()> {
if format != OutputFormat::Human {
bail!("Only human output is supported right now");
}
if contacts.is_empty() {
bail!("specify at least one contact to run through the mailmap")
}
let mut mailmap = gix::mailmap::Snapshot::default();
if let Err(err) = repo.open_mailmap_into(&mut mailmap) {
bail!(err);
}
let mut buf = Vec::new();
for contact in contacts {
let actor = match gix::actor::IdentityRef::from_bytes(&contact) {
Ok(a) => a,
Err(_) => {
let Some(email) = contact
.trim_start()
.strip_prefix(b"<")View on GitHub (pinned to e73179060b)