Import or bridge failed

The TVO-MIG family.

Written By Dustin

Last updated 15 minutes ago

TVO-MIG-* covers Git migration and bridge interoperability. Exit class 21.

Import refused before it started

Two codes, and between them they are most import failures:

  • TVO-MIG-002 — the target repository already has lanes. git import needs a fresh repository, because importing into one with history would entangle the two. Import into a clean repo. This is also what a retried, partially-written import looks like: the first attempt left lanes behind.
  • TVO-MIG-003 — the source Git repository is empty or has no branches. Nothing to import; point at a repo with commits.
tovio git import /path/to/repo

Bridge failures

tovio git bridge <remote> --bidirectional
  • TVO-MIG-004 — transport, credential, timeout, or translation failure. Authentication to the Git host fails on the Git side, so check that credential and your installed git first, then rerun.
  • TVO-MIG-006 — publish refused because the remote refs/heads/tovio/* advanced, so publishing would be a non-fast-forward. The bridge never force-pushes — that would discard remote history. Re-import to pick up the remote work, then reconcile the diverged lanes through review and land.
  • Protected paths. Content behind a policy bridges as ciphertext. Surprising, and correct — the Git side holds no recipient key.

Pushing into a TOVIO Forge with a Git client

A different surface with its own refusals, reported over Git’s status protocol:

  • TVO-GHC-060 — the push touches a protected path. The Git surface is clear-paths-only, since a Git client cannot encrypt and the Forge holds no recipient key for the cleartext. Nothing is written.
  • TVO-GHC-061 — a non-fast-forward update where your token lacks force authority on that lane.
  • TVO-GHC-062 — the repository requires signed commits. The bridge imports every pushed commit unsigned under the serving key, so a signed-commit policy can never be satisfied over Git. Use the native client.
  • TVO-GHC-063 — a direct push to a review-required lane. Push to refs/for/<lane> instead, which opens a Proposal.

Things that were never going to import

Hooks, submodules, LFS pointer semantics, and Git commit signatures. See the import article — this is expected rather than a failure.

Verify after importing

tovio logtovio fsck

Reporting it

The code, and roughly what the source repository contains — size, rough age, whether it uses submodules or LFS. Not its name, its remote URL, or its contents.