GitoxideLabs/gitoxide · error

: Validation failed with mismatches out of

Error message

{}: Validation failed with {} mismatches out of {}

What it means

After validating the git-attributes baseline, if any path mismatches were found the command writes each mismatch to stderr and bails with a summary: the repository path, the number of mismatched paths, and the total number of checked entries. This is an expected validation-failure exit path, not an internal error.

Solutions

  1. Inspect the per-path mismatch dump on stderr and normalize the offending files (renormalize line endings, fix `.gitattributes`)
  2. Run `git add --renormalize .` (or gix equivalents) and commit the normalized content
  3. Adjust the baseline configuration so it matches the intended attributes policy
  4. Re-run validation and confirm mismatches drop to zero before merging

Example fix

// before
# .gitattributes
* text=auto eol=crlf
// after
# .gitattributes (match actual repo contents, then renormalize)
* text=auto eol=lf
Defensive patterns

Strategy: try-catch

Validate before calling

// pre-check a sample file's attributes against the baseline before full validation
let platform = repo.pathspec_mismatch_detection(None)?; // or inspect .gitattributes vs worktree state

Try / catch

match validate_baseline(repo, repo_path, out, err, opts) {
    Err(e) if e.to_string().contains("Validation failed with") => {
        // parse stderr mismatch dump and renormalize affected files
        eprintln!("renormalize files listed above, then re-run");
    }
    other => other?,
}

Prevention

When it happens

Trigger: Running `validate_baseline` when at least one file in the worktree has attributes (e.g. `binary`, line endings, eol settings) that disagree with the configured baseline - e.g. files checked in with CRLF where `.gitattributes` says LF-only, or `-text` files that are actually text.

Common situations: Migrating a repo between Windows/Linux line endings; enforcing `* text=auto eol=lf` on a legacy repository; CI checks that verify attribute baselines on checkout.

Understand the failure class

Background: Schema validation failed / invalid input schema: payload rejected because its shape doesn't match the expected schema — this error's family across 28 libraries.

Related errors


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

Appendix: source

Thrown at gitoxide-core/src/repository/attributes/validate_baseline.rs:253

                    }
                }
            }
            progress.inc();
        }

        if let Some(stats) = statistics.then(|| cache.take_statistics()) {
            out.flush()?;
            writeln!(err, "{stats:#?}").ok();
        }
        progress.show_throughput(start);

        if mismatches.is_empty() {
            Ok(())
        } else {
            for (rela_path, mm) in &mismatches {
                writeln!(err, "{rela_path}: {mm:#?}").ok();
            }
            bail!(
                "{}: Validation failed with {} mismatches out of {}",
                gix::path::realpath(repo.workdir().unwrap_or(repo.git_dir()))?.display(),
                mismatches.len(),
                progress.counter().load(Ordering::Relaxed)
            );
        }
    }

    enum Baseline {
        Attribute { assignments: Vec<ThreadSafeAssignment> },
        Exclude { location: Option<ExcludeLocation> },
    }

    struct ThreadSafeAssignment {
        name: String,
        state: gix::attrs::State,
    }

View on GitHub (pinned to e73179060b)