Skip to main content

vers repo fork

Fork a tag from another org’s public repo into your own org. Produces a running VM, a fresh commit, and a repo/tag pointing at that commit, all owned by you.

Synopsis

Description

fork is a one-shot action that:
  1. Resolves the source public reference (org/repo:tag)
  2. Branches a new VM from the source commit (copy-on-write, fast)
  3. Commits the VM, creating a new commit owned by your org
  4. Creates a repo in your org (or reuses an existing same-named one)
  5. Creates a tag in that repo pointing at the new commit
Unlike git fork, there’s no tracked upstream relationship. Once the fork completes, your copy is fully independent. To pull fresh upstream changes later, run vers repo fork again.
The branch step uses a Ceph CoW clone so it’s fast: seconds even for large images. The commit step takes real time relative to the VM’s dirty state, but this is no slower than any other vers commit.

Options

Examples

Fork a supported image

You now have:
  • A running VM (vm-7a1c…) ready to SSH into
  • A commit c9e4… owned by your org
  • A repo pi-agent in your org with tag latest pointing at that commit

Fork with renaming

Useful when:
  • The source repo name collides with one you already have (and you don’t want the tags to mix)
  • You want a versioned tag from the start (v0, baseline, initial, etc.)
  • The upstream tag name is ugly

Fork into an existing repo

When the target repo already exists in your org, fork adds a tag to it instead of erroring.

Fork, then use immediately

Error Cases

Source not found

The source org must exist, the repo must be marked public, and the tag must exist in it.

Target tag already exists

Forking with default names twice in a row will succeed the first time and fail the second:
Solution: pass --tag-name to pick a different name, or delete the existing tag first:

Invalid reference format

All three parts are required: org, repo, tag. No :latest shorthand.

See Also