jdx/mise · error
{} is an existing repository without the mise marker; `mise
Error message
{} is an existing repository without the mise marker; `mise bootstrap dotfiles origin set {}` previews how it would be adopted What it means
After fetching, mise detects the state of the upstream repository with `format::detect`. If the repo state is `Unmarked` (an existing repository that lacks mise's sync marker commit) and the local status was never marked as adopted, sync aborts: adopting an existing repo would mix its contents into your dotfiles setup without your explicit preview/consent.
Source
Thrown at src/system/history/sync/run.rs:273
if !found && status.upstream_commit.is_some() {
bail!(
"the setup branch `{}` is not at {} any more (renamed, or deleted?); nothing was changed. `mise bootstrap dotfiles origin set {} --branch <name>` follows a renamed branch",
origin.branch,
origin.url,
origin.url
);
}
if !found && repo.ref_oid(UPSTREAM_REF)?.is_some() {
repo.delete_ref(UPSTREAM_REF)?;
}
status.last_fetch = Some(hstore::now_rfc3339());
}
let mut upstream_commit = repo.ref_oid(UPSTREAM_REF)?;
outcome.fetched_upstream = upstream_commit.clone();
let repo_state = format::detect(repo, upstream_commit.as_deref())?;
repo_state.check()?;
if repo_state == RepoState::Unmarked && !status.adopted {
bail!(
"{} is an existing repository without the mise marker; `mise bootstrap dotfiles origin set {}` previews how it would be adopted",
origin.url,
origin.url
);
}
// ours is the saved version: save what is live first, so a fresh
// machine's existing files take part in adoption
if request.capture
&& !(repo
.ref_oid(crate::system::history::shadow::HistoryRepo::HISTORY_REF)?
.is_none()
&& upstream_commit.is_some()
&& tracked.manifest.enrollment.is_empty())
{
capture_now(store, tracked);
}
let mut shared = share::current(repo, tracked)?;
let unsaved = unsaved_paths(repo, tracked, &shared)?;View on GitHub (pinned to afd2eddd3a)
Solutions
- Preview adoption first: run `mise bootstrap dotfiles origin set <url>` again and accept the adoption preview so `status.adopted` is recorded
- Initialize the repository with mise's marker by completing the origin-set adoption flow, then sync
- If the URL is wrong, point at the intended mise-managed repository: `mise bootstrap dotfiles origin set <correct-url>`
Example fix
// before $ mise bootstrap dotfiles sync error: git@github.com:me/dotfiles.git is an existing repository without the mise marker // after $ mise bootstrap dotfiles origin set git@github.com:me/dotfiles.git # review adoption preview, confirm $ mise bootstrap dotfiles sync
Defensive patterns
Strategy: validation
Validate before calling
mise bootstrap dotfiles origin set <url> # review adoption preview before any sync
Prevention
- Only point origin at repositories initialized by `mise bootstrap dotfiles`, or complete the adoption preview first
- Avoid reusing pre-existing dotfiles repos as sync origins without adoption
When it happens
Trigger: `mise bootstrap dotfiles sync` where `format::detect(repo, upstream_commit)` returns `RepoState::Unmarked` and `status.adopted` is false — i.e. the configured origin points at a pre-existing repository that was not initialized by `mise bootstrap dotfiles`.
Common situations: Pointing `origin set` at an existing dotfiles repo created by hand or by another tool (bare chezmoi/stow repo, plain git repo); recreating the remote repo fresh without mise's marker.
Understand the failure class
Background: "Invalid state transition" errors: "status must be X, actually Y", "already rejected/charging/uninstalled", "cannot ... while running" — what they mean when a library rejects your call — this error's family across 31 libraries.
Related errors
- incoming setup has not been completely applied; run `mise bo
- no setup repository is connected; `mise bootstrap dotfiles o
- the setup branch `{}` is not at {} any more (renamed, or del
- comparing checkpoints requires git
- listing snapshot files requires git
AI-assisted analysis of jdx/mise@afd2eddd3a (2026-09-09).
Data as JSON: /api/errors/45903d55c7185504.
Report an issue: GitHub.