Sign in

Search issue titles and bodies, change requests and comments. Private repositories you cannot read are not included.

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.

Let the CLI do what the browser does for the same account

7e0b5950c190caf11089e1aaac10f18678074fed · Keenan Nemetz · 6d ago · parent 6e1fca51

Let the CLI do what the browser does for the same account

A contributor could file an issue, comment, manage the item it wrote, and open a
change from its own branch — but only in the browser, because a push to
`refs/heads/vole` required `maintain`. The role was not the reason: the hook had
no per-path authorization for that branch, so the role gate stood in for one.

The per-path checker is now applied to every session, not only to run
credentials. It asks the ACL the questions the browser's forms ask —
CanDiscuss, CanOpenRequest, CanTriage, CanApprove — so a contributor's key can
write what a contributor may write, and a maintainer's key is unchanged. A
non-maintainer's new file must name that account as its author, which is what the
browser does for it; a maintainer keeps writing an imported issue under its
original author, because that is a trust decision rather than a capability.

Creating the issues branch still needs a maintainer, as it does from the browser,
and an approval still cannot approve its author's own change — the tree validator
already refused that, and now every transport gets the same answer. The one rule
that moved is self-approval for a maintainer's push, which is now refused earlier
rather than only at the landing gate.

With the branch no longer bundled into `maintain`, CONTRIBUTING and the guides stop
telling contributors to use the web. Both transports are one authorization model.

Part of #168, stacked on #167, which built the checker this generalises.

docs/change-requests.md +7−6

@@ -15,12 +15,13 @@ requests/<ulid>/approvals/<account-name>.md # one approval per account
15 15
16 16 ## Opening and landing a request
17 17
18 A contributor opens a request from the web after pushing a branch under
19 `refs/heads/contrib/<name>/`. The **Open change request** form on the
20 repository's change-request page lists their namespaced branches; the browser
21 builds the request from the branch's current commit. A contributor cannot name an
22 arbitrary commit or another account's branch. The namespace is the account name,
23 which is fixed at creation. CI
18 A contributor opens a request after pushing a branch under
19 `refs/heads/contrib/<name>/`, from the web or with `vole change new`. The
20 **Open change request** form on the repository's change-request page lists their
21 namespaced branches; the CLI is checked the same way by pre-receive, which reads
22 the branch the request names. A contributor cannot name an arbitrary commit or
23 another account's branch. The namespace is the account name, which is fixed at
24 creation. CI
24 25 for that commit is held until a maintainer allows the exact tip from the
25 26 repository page.
26 27