Fill in a partial clone later
tovio fetch --deepen and --complete.
Written By Dustin
Last updated 20 minutes ago
tovio fetch --deepen 100tovio fetch --completeThey are mutually exclusive — pass one or the other.
It only works on a promisor-backed clone
fetch grows a clone made with --blobless, --blob-limit, --depth, or --no-attachments. Run it anywhere else — including on a --sparse clone, which is path-scoped rather than promisor-backed — and it refuses with “this repository is already complete (not a partial / promisor-backed clone); nothing to fetch”.
That refusal is accurate, not a bug: a sparse clone never recorded promises for the objects outside its scope. Widening one means cloning again with a broader scope, or without --sparse.
When you need this
tovio blameortovio loghits the edge of your shallow history.- You cloned
--bloblessor--blob-limitand now need file contents offline. - A read failed with
TVO-SYNC-005because the promisor could not supply a promised object. - An operation refused because it needs the full closure —
tovio git exportis the common one. - Background auto-sync is skipping upstream integration, which it does on any promisor-backed clone.
- You are about to leave and want a complete copy.
Before an exit copy
Run --complete before treating a clone as your copy of record. A partial clone depends on the remote still being there, and a promisor is trusted for availability only.
Cost
--complete on a large repository transfers everything that was skipped, in one go. If you only need a bit more history, deepen incrementally instead.
Checking what you have
tovio fsckRe-hashes every object, verifies references and the audit chain, and exits non-zero on any structural problem. Worth running after completing a clone you intend to rely on.