Import & export
Fabric is a door, not a cage. You can bring an existing Git repository in with its history intact, and you can always take a clean Git repo back out.
Import a Git repo
fabric import ./my-project
This replaces your repo with the project’s full history: Fabric runs
git fast-export for you and maps commits, trees, and blobs into native ops
with a per-commit frontier. Each original Git SHA is preserved as an attribute,
so history stays faithful (authors and dates included). The repo is also
relabeled with the source folder’s name (importing ./my-project names the repo
my-project).
import advances your trunk to the imported head and blocks until the mint
finishes. To get the imported files onto disk afterward, clone trunk directly:
fabric clone --at trunk # read-only snapshot of the imported tree
To start editing, fork a change off the new trunk and clone that:
fabric change create "tidy imports"
fabric clone
A bare fabric clone (no change create) materializes the most-recent
change, which may be an existing change rather than your import. After an
import, use fabric clone --at trunk or fork a change first.
To nest the imported project under a subfolder instead of replacing the repo:
fabric import ./my-project --into packages/legacy
No repo setup is needed beforehand. Fabric provisions your repository on first
use. See fabric import --help for the full set of options.
Export back to Git
Exporting walks a frontier’s checkpoint spine back into a clean Git repository
via a git fast-import stream. It’s the one-time off-ramp, deliberately lossy
(op identity and live-collaboration conflicts are dropped), because the result
is a plain Git repo, not a bridge back into Fabric.
Why this matters
Import + export means adopting Fabric is reversible. You can move an existing project in to try the live, append-only model, and if it isn’t for you, walk out with a normal Git repo. No data is held hostage.