vole
Clone
Read only, no credentials:
https://rodent.software/vole.git
Write over SSH with a registered key:
git clone ssh://git@rodent.software:2222/vole.git
A free and open-source forge that lives in your Git repo.
Unify account terminology and clarify ACL commands
2e024cc96a391c0959ad2914caeed78b600fcfc1 · Keenan Nemetz · 14d ago · parent ab326d3a
Unify account terminology and clarify ACL commands Use account consistently in the CLI, help, docs, and remote admin messages. Rename the CLI account command from user to account while retaining the old user spelling as an alias. Replace positional ACL mutations with explicit verbs such as set-role, protect add, runners remove, and checks enable. Update local and remote admin parsing, hints, docs, and tests. Tidy repository filter alignment and remove duplicated issue/change counts from page subtitles.
forge/identity/identity.go +2−2
| @@ -26,7 +26,7 @@ | |||
| 26 | 26 | // Nothing stored here is a usable secret: public keys and public credential | |
| 27 | 27 | // halves, plus hashes of session and invite tokens. The database file can still | |
| 28 | 28 | // be copied as a backup, but it carries authentication state, so restoring an | |
| 29 | // old copy should be followed by `vole admin user revoke-sessions`. Copy it with | ||
| 29 | // old copy should be followed by `vole admin account revoke-sessions`. Copy it with | ||
| 30 | 30 | // Backup rather than cp: the database runs in WAL mode, so the newest committed | |
| 31 | 31 | // rows may still be in the -wal file. | |
| 32 | 32 | package identity | |
| @@ -168,7 +168,7 @@ CREATE INDEX IF NOT EXISTS sessions_expiry ON sessions(expires); | |||
| 168 | 168 | ||
| 169 | 169 | func openDB(path string) (*sql.DB, error) { | |
| 170 | 170 | // _txlock=immediate makes every write transaction take the write lock up | |
| 171 | // front, so a second `vole admin user` process waits on busy_timeout instead of | ||
| 171 | // front, so a second `vole admin account` process waits on busy_timeout instead of | ||
| 172 | 172 | // failing when it tries to upgrade a read lock mid-transaction. | |
| 173 | 173 | db, err := sql.Open("sqlite", path+"?_pragma=busy_timeout(5000)&_pragma=journal_mode(WAL)&_pragma=foreign_keys(1)&_txlock=immediate") | |
| 174 | 174 | if err != nil { | |