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.
Create accounts with a key and find the instance config
c36d507302c0f7fb24af6eba390c4121d67318c3 · Keenan Nemetz · 16d ago · parent 3abbe749
Create accounts with a key and find the instance config An account is now written with its first key in one transaction, so a name cannot be claimed without a credential. add-key remains for additional keys, and remote user create forwards the key on stdin. Local commands now resolve the config from --config, VOLE_CONFIG, ./vole.toml, or ~/.vole/vole.toml before falling back to defaults. init prints --config in its next steps when the instance will not be discovered automatically.
server/hook/records_test.go +2−8
| @@ -57,15 +57,9 @@ func newRecordFixture(t *testing.T) *recordFixture { | |||
| 57 | 57 | {"runner", &f.runnerID}, | |
| 58 | 58 | {"other", &f.otherID}, | |
| 59 | 59 | } { | |
| 60 | acct, err := ident.Create(u.name, "test") | ||
| 61 | if err != nil { | ||
| 62 | t.Fatal(err) | ||
| 63 | } | ||
| 64 | // A key is still needed for the account to be a plausible pusher; nothing signs | ||
| 65 | // with it, but the roster refuses an account with no key at some call sites and | ||
| 66 | // the fixture should look like an instance. | ||
| 67 | 60 | _, pub := writeKey(t, filepath.Join(dir, u.name)) | |
| 68 | if _, err := ident.AddKey(acct.ID, pub, "test"); err != nil { | ||
| 61 | acct, err := ident.Create(u.name, pub, "test") | ||
| 62 | if err != nil { | ||
| 69 | 63 | t.Fatal(err) | |
| 70 | 64 | } | |
| 71 | 65 | *u.into = acct.ID | |