jdx/mise · error
checkpoint has no content snapshot
Error message
checkpoint {} has no content snapshot What it means
`mise dotfiles history show --files` lists the file tree captured in the checkpoint. Some checkpoints only record journal/metadata without a content snapshot (snapshot is None); asking for --files on such a checkpoint bails with the checkpoint id.
Solutions
- Omit --files and use the journal output instead for that checkpoint
- Pick a newer checkpoint that includes a content snapshot (check `mise dotfiles history ls`)
- Recreate a checkpoint by touching/saving the file so a fresh snapshot is taken
Example fix
// before mise dotfiles history show ckpt123 --files // no snapshot // after mise dotfiles history show ckpt123 # journal only # or pick a snapshot-bearing checkpoint mise dotfiles history ls
Defensive patterns
Strategy: fallback
Validate before calling
mise dotfiles history ls | grep "$ckpt" # confirm checkpoint age/features
Try / catch
match Err(msg) if msg.contains("has no content snapshot") => retry without --files and use journal output Prevention
- Prefer recent checkpoints created after snapshot support
- Keep the store intact so snapshot references are not lost
- Create fresh checkpoints before experimenting
When it happens
Trigger: `mise dotfiles history show <id> --files` where c.tree.snapshot is None for that checkpoint — e.g. checkpoints created before snapshot capture was enabled or for operations that did not snapshot content.
Common situations: Old checkpoints from before the snapshot feature; large files configured to skip snapshots; corrupted store where the snapshot tree reference was lost.
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
- checkpoint is not an operation
- checkpoint is unavailable; cannot find the state before…
- dotfiles: cannot enroll encrypted paths inside an active…
- dotfiles: cannot save the baseline
- history is disabled (history.enabled = false)
AI-assisted analysis of jdx/mise@533346cc37 (2026-09-17).
Data as JSON: /api/errors/2954f56c22da0c01.
Report an issue: GitHub.
Appendix: 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 533346cc37)