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

  1. Preview adoption first: run `mise bootstrap dotfiles origin set <url>` again and accept the adoption preview so `status.adopted` is recorded
  2. Initialize the repository with mise's marker by completing the origin-set adoption flow, then sync
  3. 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

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


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