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.
Add the instance access editor and repository danger zone
2973f7274b3c569de6018239ac8c90df98c38a1b · Keenan Nemetz · 15d ago · parent 1948358f
Add the instance access editor and repository danger zone Instance admins get /admin: a repository list and a per-repository ACL editor for default role, per-account roles, protected branches, approvals, checks, and runners. The editor reads repositories directly instead of through the read rule, because an instance admin may not have a role in the repository they are administering. Everything else still hides behind a 404. Repository admins get rename and delete on the settings page behind typed confirmation. Both go through the instance operations that also move the index, queue, LFS namespace, and locks, carry CSRF, and are audited.
server/web/web.go +7
| @@ -44,6 +44,10 @@ type Web struct { | |||
| 44 | 44 | // AllowCI is the server's queue-side operation: record a maintainer's approval | |
| 45 | 45 | // for one contributor tip and enqueue it. The web owns the form and ACL check. | |
| 46 | 46 | AllowCI func(repo, ref, sha, approver string) error | |
| 47 | // RenameRepo and DeleteRepo are the instance operations that also move the | ||
| 48 | // index, queue, LFS namespace, and locks. The web owns the form and ACL check. | ||
| 49 | RenameRepo func(oldName, newName string) error | ||
| 50 | DeleteRepo func(name string) error | ||
| 47 | 51 | Logger func(format string, args ...any) | |
| 48 | 52 | ||
| 49 | 53 | // sem bounds compressed archive streams; see releases.go. | |
| @@ -152,6 +156,9 @@ type Page struct { | |||
| 152 | 156 | // CanAdmin reports whether the viewer may administer the repository named in | |
| 153 | 157 | // the request path. The repository header uses it to show Settings. | |
| 154 | 158 | CanAdmin bool | |
| 159 | // InstanceAdmin reports whether the viewer may use the instance-wide admin | ||
| 160 | // surface. The global bar uses it to show Admin. | ||
| 161 | InstanceAdmin bool | ||
| 155 | 162 | } | |
| 156 | 163 | ||
| 157 | 164 | // canRead reports whether the viewer may see the repository. An anonymous | |