vole
Clone
Read only, no credentials:
https://rodent.software/git/vole.git
Write over SSH with a registered key:
git clone ssh://git@0.0.0.0:2222/vole.git
A free and open-source forge that lives in your Git repo.
Docs: rewrite the README and organize the guides
520470e19cd906bd6fff987e2d132d793ce56486 · Keenan Nemetz · 16d ago · parent c5902451
Docs: rewrite the README and organize the guides Replace the long README with a landing page, split feature details into focused guides, and remove the roadmap and spike notes. Update comments that referenced them.
docs/cli.md +152
| @@ -0,0 +1,152 @@ | |||
| 1 | # CLI reference | ||
| 2 | |||
| 3 | The command line is Vole's admin interface. That is deliberate: if you can run | ||
| 4 | Vole on the machine, you are the operator. There is no separate admin panel to | ||
| 5 | secure or keep in sync. | ||
| 6 | |||
| 7 | Run `vole help` for the built-in summary. If you make a usage mistake, Vole exits | ||
| 8 | with code `129`, just like Git. | ||
| 9 | |||
| 10 | ## Common options | ||
| 11 | |||
| 12 | | Option | Used by | Meaning | | ||
| 13 | |---|---|---| | ||
| 14 | | `--config <path>` | Commands that read local settings | Use a different `vole.toml` (default `vole.toml`) | | ||
| 15 | | `--remote <name>` | Issue, request, release, and pages commands | Git remote that points at the instance (default `origin`) | | ||
| 16 | | `--no-push` | `issue`, `request` | Commit locally without pushing | | ||
| 17 | | `--dir <path>` | `init`, `workflow`, `runner` | Working or checkout directory | | ||
| 18 | | `--branch <name>` | `pages` | Site branch (default `pages`) | | ||
| 19 | | `--format <fmt>` | `issue list` | Output fields such as `%(id)` and `%(title)` | | ||
| 20 | | `-h`, `--help` | All | Print usage | | ||
| 21 | |||
| 22 | Options follow Git's conventions: `--long value`, `--long=value`, `-o value`, | ||
| 23 | `-ovalue`, repeated options, and `--` to end option parsing. Options may appear | ||
| 24 | before or after arguments. | ||
| 25 | |||
| 26 | ## Instance | ||
| 27 | |||
| 28 | ```sh | ||
| 29 | vole init [--dir <path>] | ||
| 30 | vole serve [--config <path>] [--log debug] | ||
| 31 | vole version | ||
| 32 | ``` | ||
| 33 | |||
| 34 | ## Users | ||
| 35 | |||
| 36 | ```sh | ||
| 37 | vole user create <name> | ||
| 38 | vole user add-key --key <file|-> <name|id> | ||
| 39 | vole user rm-key <name|id> <fingerprint> | ||
| 40 | vole user rename <name|id> <new-name> | ||
| 41 | vole user retire <name|id> | ||
| 42 | vole user list | ||
| 43 | vole user backup <path> | ||
| 44 | vole whoami [--id] [--remote <name>] | ||
| 45 | ``` | ||
| 46 | |||
| 47 | See [Users and access](users-and-access.md). | ||
| 48 | |||
| 49 | ## Repositories | ||
| 50 | |||
| 51 | ```sh | ||
| 52 | vole repo create --owner <user> <name> [--description <text>] | ||
| 53 | vole repo list | ||
| 54 | vole repo rename <old> <new> | ||
| 55 | vole repo delete <name> | ||
| 56 | ``` | ||
| 57 | |||
| 58 | New repositories are private. The owner becomes the first admin. | ||
| 59 | |||
| 60 | ## Access | ||
| 61 | |||
| 62 | ```sh | ||
| 63 | vole acl show <repo> | ||
| 64 | vole acl set <repo> <user> <none|read|write|admin> | ||
| 65 | vole acl default <repo> <none|read|write|admin> | ||
| 66 | vole acl protect <repo> <ref-pattern>... | ||
| 67 | vole acl approvals <repo> <n> | ||
| 68 | vole acl checks <repo> <on|off> | ||
| 69 | vole acl runners <repo> [<user>...] [--add <user> | --remove <user> | --clear] | ||
| 70 | ``` | ||
| 71 | |||
| 72 | See [Users and access](users-and-access.md) and [CI](ci.md). | ||
| 73 | |||
| 74 | ## Issues | ||
| 75 | |||
| 76 | ```sh | ||
| 77 | vole issue new --title <title> [-m <text> | -F <file>] [-l <label>]... [-a <user>]... | ||
| 78 | vole issue comment <id> [-m <text> | -F <file>] | ||
| 79 | vole issue edit-comment <id> <comment-id> [-m <text> | -F <file>] | ||
| 80 | vole issue rm-comment <id> <comment-id> | ||
| 81 | vole issue edit <id> [--title <title>] [-m <text> | -F <file>] [-l <label>]... [-a <user>]... [--unassign <user>]... | ||
| 82 | vole issue assign <id> <user>... | ||
| 83 | vole issue unassign <id> <user>... | ||
| 84 | vole issue close <id> | ||
| 85 | vole issue reopen <id> | ||
| 86 | vole issue list [--state open|closed|all] [-l <label>]... [--assignee <user>]... [--format <fmt>] | ||
| 87 | vole issue show <id> | ||
| 88 | ``` | ||
| 89 | |||
| 90 | Ids and comment ids accept a unique prefix. See [Issues](issues.md). | ||
| 91 | |||
| 92 | ## Change requests | ||
| 93 | |||
| 94 | ```sh | ||
| 95 | vole request new --title <title> --base <branch> [--head <rev>] [-m <text> | -F <file>] | ||
| 96 | vole request list [--state open|closed] | ||
| 97 | vole request show <id> | ||
| 98 | vole request comment <id> [-m <text> | -F <file>] [--path <file> --line <n> [--side new|old]] | ||
| 99 | vole request edit-comment <id> <comment-id> [-m <text> | -F <file>] | ||
| 100 | vole request rm-comment <id> <comment-id> | ||
| 101 | vole request update <id> --head <rev> | ||
| 102 | vole request approve <id> [--as <user>] | ||
| 103 | vole request close <id> | ||
| 104 | vole request reopen <id> | ||
| 105 | ``` | ||
| 106 | |||
| 107 | `request` also accepts `requests` and `cr` as aliases. An approval is only accepted | ||
| 108 | from the account it names. See [Change requests](change-requests.md). | ||
| 109 | |||
| 110 | ## Releases | ||
| 111 | |||
| 112 | ```sh | ||
| 113 | vole release create <tag> (-m <text> | -F <file|->) | ||
| 114 | vole release attach <tag> <file>... [--remote <name>] | ||
| 115 | ``` | ||
| 116 | |||
| 117 | `create` writes the annotated tag in the current repository; push it with | ||
| 118 | `git push --follow-tags`. See [Releases](releases.md). | ||
| 119 | |||
| 120 | ## Pages | ||
| 121 | |||
| 122 | ```sh | ||
| 123 | vole pages deploy [<dir>] [--branch <name>] [-m <text>] [--dry-run] [--remote <name>] | ||
| 124 | vole pages status [--branch <name>] [--remote <name>] | ||
| 125 | vole pages unpublish [--branch <name>] [--remote <name>] | ||
| 126 | ``` | ||
| 127 | |||
| 128 | See [Sites](sites.md). | ||
| 129 | |||
| 130 | ## CI | ||
| 131 | |||
| 132 | ```sh | ||
| 133 | vole runner --remote <ssh-url> [--once] [--dir <path>] [--repos <name>]... [--label <name>]... | ||
| 134 | vole workflow check [--dir <path>] | ||
| 135 | vole workflow list [--dir <path>] | ||
| 136 | ``` | ||
| 137 | |||
| 138 | See [CI](ci.md). | ||
| 139 | |||
| 140 | ## Maintenance | ||
| 141 | |||
| 142 | ```sh | ||
| 143 | vole gc [--dry-run] [--grace <duration>] | ||
| 144 | vole index rebuild | ||
| 145 | ``` | ||
| 146 | |||
| 147 | See [Operations](operations.md). | ||
| 148 | |||
| 149 | ## Internal | ||
| 150 | |||
| 151 | `vole hook pre-receive|post-receive` is installed in repositories by Vole. It is | ||
| 152 | not intended to be run by hand. | ||