jdx/mise · error
checkpoint {} has no content snapshot
Error message
checkpoint {} has no content snapshot What it means
`mise bootstrap dotfiles history show <checkpoint> --files` lists the file contents captured in a checkpoint's git tree. Content snapshots are optional — some checkpoints only record metadata (a journal) without a full tree. When `--files` is requested for a checkpoint whose tree has no snapshot, mise throws "checkpoint <id> has no content snapshot".
Source
Thrown at src/cli/dotfiles/history/show.rs:145
}
for omitted in &coverage.omitted {
miseprintln!(" omitted: {} ({})", omitted.path, omitted.reason);
}
for incomplete in &coverage.incomplete {
miseprintln!(" incomplete: {} ({})", incomplete.path, incomplete.reason);
}
if let Some(operation) = &c.operation
&& !operation.journal.is_empty()
{
miseprintln!("");
miseprintln!("Journal:");
for line in journal::render(&operation.journal) {
miseprintln!(" - {line}");
}
}
if self.files {
let Some(tree) = &c.tree.snapshot else {
bail!("checkpoint {} has no content snapshot", entry.id);
};
let Some(repo) = store.repo() else {
bail!("listing snapshot files requires git");
};
miseprintln!("");
miseprintln!("Files:");
for file in repo.ls_tree(tree)? {
let size = file.size.map(|size| size.to_string()).unwrap_or_default();
miseprintln!(
" {} {:>8} {}",
file.mode,
size,
crate::system::history::tracked::tree_path_to_display(&file.path)
);
}
}
Ok(())
}View on GitHub (pinned to afd2eddd3a)
Solutions
- Drop `--files` and inspect the checkpoint's journal instead (the metadata still shows what changed).
- Pick a different checkpoint that includes a content snapshot (check with `history ls` / show without --files).
- Enable content snapshotting in history settings so future checkpoints include trees, then create a new checkpoint.
Example fix
// before mise bootstrap dotfiles history show abc123 --files # no content snapshot // after mise bootstrap dotfiles history show abc123 # journal only mise bootstrap dotfiles history show def456 --files # checkpoint with snapshot
Defensive patterns
Strategy: fallback
Try / catch
# try --files, fall back to journal-only view if ! mise bootstrap dotfiles history show "$id" --files 2>/dev/null; then mise bootstrap dotfiles history show "$id" fi
Prevention
- Keep history content snapshots enabled so checkpoints include trees.
- Don't rely on `--files` for old or metadata-only checkpoints.
When it happens
Trigger: Running `mise bootstrap dotfiles history show <id> --files` where the selected checkpoint's `c.tree.snapshot` is None — the checkpoint stored only metadata, not file contents.
Common situations: History was recorded while snapshotting was disabled or the file was untracked; very old checkpoints created before snapshot capture existed; checkpoint entries created by operations that intentionally skip snapshots.
Understand the failure class
Background: "must not be empty", "cannot be empty" — required-field validation errors across open-source libraries — this error's family across 41 libraries.
Related errors
- comparing checkpoints requires git
- listing snapshot files requires git
- history is disabled (history.enabled = false)
- the annotated commit is not in the current history
- [dotfiles]."{}": source does not exist: {}
AI-assisted analysis of jdx/mise@afd2eddd3a (2026-09-09).
Data as JSON: /api/errors/2954f56c22da0c01.
Report an issue: GitHub.