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.
Fold admin work into repository settings and a Users page
9579c1f976254fdeb2ec73d4016db5b25c7921c1 · Keenan Nemetz · 14d ago · parent 381d6aac
Fold admin work into repository settings and a Users page Remove the combined /admin tabs. Per-repository access rules now live on the repository's Settings page, visible to instance admins while repository details and the danger zone stay with repository admins. User management moves to /users, linked from the top navigation only for instance admins, and repository creation moves to /repos/new. Align the invite, danger-zone, and settings forms with the shared card-and-actions layout, and make settings section headings consistent.
server/web/web.go +3−5
| @@ -179,16 +179,14 @@ type Page struct { | |||
| 179 | 179 | // finer context. | |
| 180 | 180 | func pageSection(path string) string { | |
| 181 | 181 | switch { | |
| 182 | case path == "/" || strings.HasPrefix(path, "/r/"): | ||
| 182 | case path == "/" || path == "/repos/new" || strings.HasPrefix(path, "/r/"): | ||
| 183 | 183 | return "repos" | |
| 184 | 184 | case strings.HasPrefix(path, "/runners"): | |
| 185 | 185 | return "runners" | |
| 186 | 186 | case strings.HasPrefix(path, "/activity"): | |
| 187 | 187 | return "activity" | |
| 188 | case path == "/admin" || strings.HasPrefix(path, "/admin/repos"): | ||
| 189 | return "admin-repos" | ||
| 190 | case strings.HasPrefix(path, "/admin/users"): | ||
| 191 | return "admin-users" | ||
| 188 | case path == "/users" || strings.HasPrefix(path, "/users/"): | ||
| 189 | return "users" | ||
| 192 | 190 | case strings.HasPrefix(path, "/account"): | |
| 193 | 191 | return "account" | |
| 194 | 192 | } | |