Command reference
Generated from the command-line definitions, so it never drifts from the binary.
minato
Overview and sync of Git repositories across hosting providers
Usage: minato [OPTIONS] <COMMAND>
Subcommands:
status— Show how local clones stand against what the provider reportsclone— Clone repositories that have no local copyfetch— Fetch every local clone. This never touches a working treeupdate— Fast-forward clones that are strictly behind and cleantui— Browse repositories interactivelylist— List every repository, with what the provider reports about itsync-fork— Sync forks with their upstream, fast-forward onlymove— Move one repository into a group, which moves it on diskmanifest— Record where clones sit, and restore a tree from that recordrefresh— Discard cached data so the next run asks the provider againauth— Inspect authenticationdoctor— Check that configuration and tooling are usablecompletions— Print a shell completion script, or install one
Options:
--json— Emit JSON instead of a table.Global because every command answers something, so every command has an answer to serialise.
--refresh— Ignore cached data and ask the provider again
minato status
Show how local clones stand against what the provider reports
Usage: minato status [OPTIONS]
Options:
--owner <OWNER>— Keep only repositories owned by these accounts.Every command that works on a selection takes this. One that names its subject outright, or touches no repository at all, refuses it rather than ignoring it.
--group <GROUP>— Keep only repositories in these groups, and in the groups beneath them.A group is a directory path beneath a root, written with
/, so--group persokeepspersoand everything filed under it, includingperso/apps, while--group perso/appskeeps only that bucket.A group is where a clone sits, so only the commands that scan take this:
status,clone,fetch,update, andtui. Anywhere else it is refused rather than ignored.--state <STATE>— Keep only repositories in these states.A state is how a clone stands against the remote, so only the commands that scan take this:
status,clone,fetch,update, andtui. Anywhere else it is refused rather than ignored.Possible values:
not-cloned: Reported by the provider, with no local clonein-sync: Matching the remote exactlyahead: Holding commits the remote does notbehind: Missing commits the remote hasdiverged: Both sides hold commits the other lackslocal-only: A clone no reported repository corresponds toincomparable: A clone that cannot be compareddrifted: Anything that is not in sync, which is what usually wants attention
--include-forks— Include forks, which are hidden by default--include-external— Include clones of repositories owned by nobody you track, which are hidden by default.This describes a clone, so only the commands that scan take it:
status,clone,fetch,update, andtui. Anywhere else it is refused rather than ignored.
minato clone
Clone repositories that have no local copy
Usage: minato clone [OPTIONS]
Options:
--owner <OWNER>— Keep only repositories owned by these accounts.Every command that works on a selection takes this. One that names its subject outright, or touches no repository at all, refuses it rather than ignoring it.
--group <GROUP>— Keep only repositories in these groups, and in the groups beneath them.A group is a directory path beneath a root, written with
/, so--group persokeepspersoand everything filed under it, includingperso/apps, while--group perso/appskeeps only that bucket.A group is where a clone sits, so only the commands that scan take this:
status,clone,fetch,update, andtui. Anywhere else it is refused rather than ignored.--state <STATE>— Keep only repositories in these states.A state is how a clone stands against the remote, so only the commands that scan take this:
status,clone,fetch,update, andtui. Anywhere else it is refused rather than ignored.Possible values:
not-cloned: Reported by the provider, with no local clonein-sync: Matching the remote exactlyahead: Holding commits the remote does notbehind: Missing commits the remote hasdiverged: Both sides hold commits the other lackslocal-only: A clone no reported repository corresponds toincomparable: A clone that cannot be compareddrifted: Anything that is not in sync, which is what usually wants attention
--include-forks— Include forks, which are hidden by default--include-external— Include clones of repositories owned by nobody you track, which are hidden by default.This describes a clone, so only the commands that scan take it:
status,clone,fetch,update, andtui. Anywhere else it is refused rather than ignored.--into <DIRECTORY>— Where to put them. Defaults to the first configured root.Where a repository belongs is a judgement its identity does not carry, so it is chosen here rather than derived.
--into-group <GROUP>— Put them in this group, which is the directory path that group already occupies beneath a root, such asperso/apps.This is not the same as the
--groupfilter, which selects by where a clone already sits. A repository that has not been cloned is in no group, so filtering by one matches nothing.--dry-run— Report what cloning targets, and change nothing--shallow— Clone with a truncated history
minato fetch
Fetch every local clone. This never touches a working tree
Usage: minato fetch [OPTIONS]
Options:
--owner <OWNER>— Keep only repositories owned by these accounts.Every command that works on a selection takes this. One that names its subject outright, or touches no repository at all, refuses it rather than ignoring it.
--group <GROUP>— Keep only repositories in these groups, and in the groups beneath them.A group is a directory path beneath a root, written with
/, so--group persokeepspersoand everything filed under it, includingperso/apps, while--group perso/appskeeps only that bucket.A group is where a clone sits, so only the commands that scan take this:
status,clone,fetch,update, andtui. Anywhere else it is refused rather than ignored.--state <STATE>— Keep only repositories in these states.A state is how a clone stands against the remote, so only the commands that scan take this:
status,clone,fetch,update, andtui. Anywhere else it is refused rather than ignored.Possible values:
not-cloned: Reported by the provider, with no local clonein-sync: Matching the remote exactlyahead: Holding commits the remote does notbehind: Missing commits the remote hasdiverged: Both sides hold commits the other lackslocal-only: A clone no reported repository corresponds toincomparable: A clone that cannot be compareddrifted: Anything that is not in sync, which is what usually wants attention
--include-forks— Include forks, which are hidden by default--include-external— Include clones of repositories owned by nobody you track, which are hidden by default.This describes a clone, so only the commands that scan take it:
status,clone,fetch,update, andtui. Anywhere else it is refused rather than ignored.--dry-run— Report what fetching targets, and change nothing
minato update
Fast-forward clones that are strictly behind and clean
Usage: minato update [OPTIONS]
Options:
--owner <OWNER>— Keep only repositories owned by these accounts.Every command that works on a selection takes this. One that names its subject outright, or touches no repository at all, refuses it rather than ignoring it.
--group <GROUP>— Keep only repositories in these groups, and in the groups beneath them.A group is a directory path beneath a root, written with
/, so--group persokeepspersoand everything filed under it, includingperso/apps, while--group perso/appskeeps only that bucket.A group is where a clone sits, so only the commands that scan take this:
status,clone,fetch,update, andtui. Anywhere else it is refused rather than ignored.--state <STATE>— Keep only repositories in these states.A state is how a clone stands against the remote, so only the commands that scan take this:
status,clone,fetch,update, andtui. Anywhere else it is refused rather than ignored.Possible values:
not-cloned: Reported by the provider, with no local clonein-sync: Matching the remote exactlyahead: Holding commits the remote does notbehind: Missing commits the remote hasdiverged: Both sides hold commits the other lackslocal-only: A clone no reported repository corresponds toincomparable: A clone that cannot be compareddrifted: Anything that is not in sync, which is what usually wants attention
--include-forks— Include forks, which are hidden by default--include-external— Include clones of repositories owned by nobody you track, which are hidden by default.This describes a clone, so only the commands that scan take it:
status,clone,fetch,update, andtui. Anywhere else it is refused rather than ignored.--dry-run— Report what updating targets, and change nothing
minato tui
Browse repositories interactively
Usage: minato tui [OPTIONS]
Options:
--owner <OWNER>— Keep only repositories owned by these accounts.Every command that works on a selection takes this. One that names its subject outright, or touches no repository at all, refuses it rather than ignoring it.
--group <GROUP>— Keep only repositories in these groups, and in the groups beneath them.A group is a directory path beneath a root, written with
/, so--group persokeepspersoand everything filed under it, includingperso/apps, while--group perso/appskeeps only that bucket.A group is where a clone sits, so only the commands that scan take this:
status,clone,fetch,update, andtui. Anywhere else it is refused rather than ignored.--state <STATE>— Keep only repositories in these states.A state is how a clone stands against the remote, so only the commands that scan take this:
status,clone,fetch,update, andtui. Anywhere else it is refused rather than ignored.Possible values:
not-cloned: Reported by the provider, with no local clonein-sync: Matching the remote exactlyahead: Holding commits the remote does notbehind: Missing commits the remote hasdiverged: Both sides hold commits the other lackslocal-only: A clone no reported repository corresponds toincomparable: A clone that cannot be compareddrifted: Anything that is not in sync, which is what usually wants attention
--include-forks— Include forks, which are hidden by default--include-external— Include clones of repositories owned by nobody you track, which are hidden by default.This describes a clone, so only the commands that scan take it:
status,clone,fetch,update, andtui. Anywhere else it is refused rather than ignored.
minato list
List every repository, with what the provider reports about it
Usage: minato list [OPTIONS]
Options:
--owner <OWNER>— Keep only repositories owned by these accounts.Every command that works on a selection takes this. One that names its subject outright, or touches no repository at all, refuses it rather than ignoring it.
--include-forks— Include forks, which are hidden by default
minato sync-fork
Sync forks with their upstream, fast-forward only.
Only a fork strictly behind its upstream is synced, through GitHub’s merge-upstream. A fork holding its own commits is reported and left alone rather than merged, so history is never rewritten.
Usage: minato sync-fork [OPTIONS]
Options:
--owner <OWNER>— Keep only repositories owned by these accounts.Every command that works on a selection takes this. One that names its subject outright, or touches no repository at all, refuses it rather than ignoring it.
--include-forks— Include forks, which are hidden by default--dry-run— Report what syncing targets, and change nothing
minato move
Move one repository into a group, which moves it on disk.
Deliberately one repository at a time: this changes the filesystem, so it is never a side effect of anything else.
Usage: minato move [OPTIONS] --to-group <GROUP> <REPOSITORY>
Arguments:
<REPOSITORY>— Which repository, named by identity, owner/name, or bare name
Options:
--include-forks— Include forks, which are hidden by default--to-group <GROUP>— The group to move it into, which is a directory path beneath its root, such asperso/apps--dry-run— Report what moving targets, and change nothing
minato manifest
Record where clones sit, and restore a tree from that record.
The record is a .minato.toml file in the root it describes, so the file is the reference: every path in it is relative to the directory holding it, and restoring puts clones back beneath that directory whatever it is called on this machine. Sync the directory however you already sync anything, and the layout travels with it.
Usage: minato manifest <COMMAND>
Subcommands:
write— Record every clone found in the tree, creating the manifest if neededapply— Restore the tree: clone what the manifest records and this machine lacksdiff— Report how the manifest and the tree on disk disagreeforget— Stop recording one repository, without touching its clone
minato manifest write
Record every clone found in the tree, creating the manifest if needed.
Nothing is ever removed: a repository recorded here but absent from this machine is kept, since another machine sharing the file may hold it. Use minato manifest forget to drop one deliberately.
Usage: minato manifest write [OPTIONS] [DIRECTORY]
Arguments:
<DIRECTORY>— Which tree, defaulting to the one the current directory sits in
Options:
--include-forks— Include forks, which are hidden by default
minato manifest apply
Restore the tree: clone what the manifest records and this machine lacks.
A clone sitting somewhere other than its recorded place is reported and left alone, since it was put there by someone rather than by a manifest. --relocate moves those into the recorded place instead.
Usage: minato manifest apply [OPTIONS] [DIRECTORY]
Arguments:
<DIRECTORY>— Which tree, defaulting to the one the current directory sits in
Options:
--include-forks— Include forks, which are hidden by default--relocate— Move clones that sit somewhere other than their recorded place--dry-run— Report what restoring targets, and change nothing--shallow— Clone with a truncated history
minato manifest diff
Report how the manifest and the tree on disk disagree
Usage: minato manifest diff [OPTIONS] [DIRECTORY]
Arguments:
<DIRECTORY>— Which tree, defaulting to the one the current directory sits in
Options:
--include-forks— Include forks, which are hidden by default
minato manifest forget
Stop recording one repository, without touching its clone
Usage: minato manifest forget [OPTIONS] <REPOSITORY> [DIRECTORY]
Arguments:
<REPOSITORY>— Which repository, named by identity, owner/name, or bare name<DIRECTORY>— Which tree, defaulting to the one the current directory sits in
Options:
--include-forks— Include forks, which are hidden by default
minato refresh
Discard cached data so the next run asks the provider again
Usage: minato refresh [OPTIONS]
Options:
--include-forks— Include forks, which are hidden by default
minato auth
Inspect authentication
Usage: minato auth <COMMAND>
Subcommands:
status— Report whether a token was found, and where it came from
minato auth status
Report whether a token was found, and where it came from.
The selection sits here rather than on auth, so minato auth status --owner ... is read and then explained rather than rejected as an unknown argument.
Usage: minato auth status [OPTIONS]
Options:
--include-forks— Include forks, which are hidden by default
minato doctor
Check that configuration and tooling are usable
Usage: minato doctor [OPTIONS]
Options:
--include-forks— Include forks, which are hidden by default
minato completions
Print a shell completion script, or install one.
The script goes to standard output and where to put it goes to standard error, so minato completions zsh > _minato writes the script alone while the instructions still reach the terminal. Run it without redirecting to read them, or see https://m.canouil.dev/minato/shells.html.
--install writes it where the shell reads it instead, and edits the shell’s configuration only where the file alone is not enough. A script already on disk is updated wherever it is, rather than moved.
It is generated from the command definitions, so it cannot describe a command the binary does not have, and it needs regenerating after an upgrade that adds one. minato doctor says when one has gone stale.
Usage: minato completions [OPTIONS] [SHELL]
Arguments:
<SHELL>— Which shell to generate for, taken from $SHELL when left outPossible values:
bash,elvish,fish,powershell,zsh
Options:
--include-forks— Include forks, which are hidden by default--install— Write the script where the shell reads it, rather than printing it--uninstall— Remove the installed script, and the managed block that reaches it--dry-run— Report every path that installing targets, and change nothing
This document was generated automatically by clap-markdown.