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.
Store changes under changes/<ulid>/change.md
b492b557f5cc5633b3dcb21fdbb5e2ad98d0bc16 · Keenan Nemetz · 3d ago · parent 9bce3723
Store changes under changes/<ulid>/change.md The web, the CLI, and the docs call these items changes; only the metadata tree still said requests. Rename the directory and the record file so the format and the product use one word. The tree is a contract, so this is a format change rather than a display change: the top-level layout stays closed, and a request path no longer validates. An existing repository is migrated by rewriting its vole branch, which is an audited admin force-push; the index rebuilds from the new tip and the #N aliases keep their ULIDs because the rewrite preserves commit order. Refs #202 (01M6S3JC3Y2KA6EFJK6APX7A1T).
docs/change-requests.md +5−5
| @@ -8,9 +8,9 @@ commit it reviewed and a moved branch starts the review over. | |||
| 8 | 8 | ## Files behind a request | |
| 9 | 9 | ||
| 10 | 10 | ```text | |
| 11 | requests/<ulid>/request.md # title, state, author, base, head, closes | ||
| 12 | requests/<ulid>/comments/<ulid>.md # discussion | ||
| 13 | requests/<ulid>/approvals/<account-name>.md # one approval per account | ||
| 11 | changes/<ulid>/change.md # title, state, author, base, head, closes | ||
| 12 | changes/<ulid>/comments/<ulid>.md # discussion | ||
| 13 | changes/<ulid>/approvals/<account-name>.md # one approval per account | ||
| 14 | 14 | ``` | |
| 15 | 15 | ||
| 16 | 16 | ## Opening and landing a request | |
| @@ -114,7 +114,7 @@ lands into it, with no separate command. | |||
| 114 | 114 | ## Linking the issues it closes | |
| 115 | 115 | ||
| 116 | 116 | A change request names the issues it fixes in its own metadata, not in its | |
| 117 | description: `request.md` carries a `closes` list, the request page shows those | ||
| 117 | description: `change.md` carries a `closes` list, the request page shows those | ||
| 118 | 118 | issues, and landing the request closes them in the same commit that marks it | |
| 119 | 119 | merged. A `#42`, `#<ulid>` or `Fixes #42` in the description is only prose — it | |
| 120 | 120 | does not link anything and closes nothing. | |
| @@ -225,7 +225,7 @@ was submitted, the approval is refused and the approver sees the new target inst | |||
| 225 | 225 | of approving it unseen. | |
| 226 | 226 | ||
| 227 | 227 | An approval is stored at `approvals/<account-name>.md`. Only the account named in | |
| 228 | that path can create, change, or remove it. `request.md` records the author's | ||
| 228 | that path can create, change, or remove it. `change.md` records the author's | ||
| 229 | 229 | account name in `author`; that is the only author field and it is what blocks | |
| 230 | 230 | self-approval. An admin can repair an | |
| 231 | 231 | approval, and the override is recorded in `data/audit.log`. | |