Docs

Search Vex documentation

Search public documentation, commands, and release notes.

Browse documentation

Repositories and Changes

GitHub materialization

Keep a GitHub repository and a folder in a Vex monorepo connected through an explicit materialization workflow.

On this page

What materialization does

Materialization connects a GitHub repository’s full history to a specific folder in a Vex monorepo. Vex keeps an identity map for the repository and folder so synchronization can preserve the external relationship without treating the whole monorepo as a Git subtree.

It is the right choice when a project must remain a first-class GitHub repository while also living in a shared Vex Home history.

Start a materialization

Use the GitHub import flow to choose the organization, source, target Home path, and virtual repository. Vex records a durable run so it can be inspected and resumed as the source is read and converted.

Terminal
vex repo import --org <org-slug>

For a scripted path, use the relevant vex import github command with an explicit organization, path, virtual-repository slug, and confirmation.

Two sync directions, one identity map

The source GitHub history and target Vex folder keep distinct identities. Vex uses the identity map to recognize changes that have already crossed the boundary instead of blindly copying commits or treating all same-named paths as equivalent.

Choose the configured sync mode deliberately. A one-time import is not the same as an ongoing two-way sync contract.

Watch a run

The importer reports a durable session ID. Keep the terminal open for the initial local-assisted run, or resume a paused run when needed.

Terminal
vex repo import --resume <session-id>

The web workflow exposes the same high-level import and authorization process; the local path is often faster for a large initial clone and conversion.

Important boundaries

Materialization is not a substitute for native source control. Once a project is in Vex, use changes, reviews, queues, and explicit sync paths. Use remote Git sync when you only need an external Git relationship rather than a folder-in-monorepo materialization.