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 instance-wide roles and refine access UI
5b814e9958090cfd1fa826efb2d375bf613547c1 · Keenan Nemetz · 14d ago · parent 9579c1f9
Add instance-wide roles and refine access UI Instance roles now live on accounts, apply to public repositories, and the Admin role is the unified instance-admin permission with access to every repository. Repository ACLs can raise an instance role but not lower it. Adds role assignment to the users UI and CLI, open-registration role config, a reusable role picker, and separates adding a repository account from saving access rules.
server/ssh/sshserver_test.go +1−1
| @@ -318,7 +318,7 @@ func TestReadOnlyUserCannotPush(t *testing.T) { | |||
| 318 | 318 | if err == nil { | |
| 319 | 319 | t.Fatal("read-only user pushed successfully") | |
| 320 | 320 | } | |
| 321 | if !strings.Contains(errs, "does not have maintain access") || !strings.Contains(errs, "reader") { | ||
| 321 | if !strings.Contains(errs, "does not have maintain or contribute access") || !strings.Contains(errs, "reader") { | ||
| 322 | 322 | t.Fatalf("rejection did not name the SSH identity:\n%s", errs) | |
| 323 | 323 | } | |
| 324 | 324 | if after := h.serverRef(); after != before { | |