jdx/mise · error

listing snapshot files requires git

Error message

listing snapshot files requires git

What it means

Listing the files inside a checkpoint's content snapshot requires git (`repo.ls_tree`). If the checkpoint has a snapshot tree reference but the history store has no git repository backing it (`store.repo()` is None), mise cannot enumerate the tree and throws "listing snapshot files requires git".

Source

Thrown at src/cli/dotfiles/history/show.rs:148

        }
        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(())
    }
}

pub(crate) fn policy(autosave: bool) -> String {

View on GitHub (pinned to afd2eddd3a)

Solutions

  1. Install/use a mise build with git support (standard release binaries).
  2. Re-initialize or restore the history store's git repository.
  3. View the checkpoint journal without `--files` as a fallback for what changed.

Example fix

// before
mise bootstrap dotfiles history show abc123 --files  # requires git
// after
# reinstall mise with git support, then:
mise bootstrap dotfiles history show abc123 --files
Defensive patterns

Strategy: fallback

Try / catch

# fall back to journal view when git tree listing is unavailable
if ! mise bootstrap dotfiles history show "$id" --files 2>/dev/null; then
  mise bootstrap dotfiles history show "$id"
fi

Prevention

When it happens

Trigger: Running `mise bootstrap dotfiles history show <id> --files` where the checkpoint has `tree.snapshot` set but `store.repo()` returns None (mise built without git, or the store lacks git backing).

Common situations: A mise build without git support used on a store that does record snapshot refs; a history store whose git metadata was stripped or corrupted during sync/backup.

Understand the failure class

Background: "not installed", "pip install", "required for": how missing-dependency errors surface across open-source libraries — this error's family across 34 libraries.

Related errors


AI-assisted analysis of jdx/mise@afd2eddd3a (2026-09-09). Data as JSON: /api/errors/24a0efb7a936cb0d. Report an issue: GitHub.