neo migrate
Adopt every git checkout under a directory — “move my projects here”.
neo adopt for a whole projects directory: one repository created and pushed per checkout found, each becoming that checkout’s new origin with the old remote preserved under --old-remote.
Discovery skips dotfile directories and never follows symlinks, and stops at the first checkout on a path — a clone vendored inside another repository is not adopted separately.
A checkout that fails is reported and the scan continues; because adopt rewrites local remotes only after its pushes succeed, that checkout is left untouched and re-running is the retry. Exit status is non-zero if anything failed.
Start with --dry-run on a directory you have not migrated before.
neo migrate [OPTIONS] [DIR]| Option | Value | Required | Default | Env | Values | Description |
|---|---|---|---|---|---|---|
<DIR> |
no | . |
Directory holding the checkouts. Defaults to the current directory | |||
--depth |
<DEPTH> |
no | 1 |
How many directory levels below DIR to search. 1 = immediate children, which is the “~/projects/<repo>” layout; raise it for “~/projects/<group>/<repo>” | ||
--owner |
<OWNER> |
no | Owner for every repository created. Defaults to your own handle; name an organisation to migrate into it instead | |||
--visibility |
<VISIBILITY> |
no | private |
public, internal, private |
Visibility applied ONLY to repositories that must be created. Defaults to private |
|
--old-remote |
<OLD_REMOTE> |
no | github |
Name each checkout’s current origin is renamed to |
||
--mirror-back |
no | Also register a push mirror back to each old GitHub home | ||||
--dry-run |
no | Print the plan for every checkout and change nothing | ||||
--yes |
no | Accept a non-public target host without naming it via --host |
||||
--force |
no | Pass --force through to each adopt (see neo adopt --help) |