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.
Publish repositories as Go modules and move the module path to rodent.software
d37d301fd4881ee37855387377db5a7aed843017 · Keenan Nemetz · 17h ago · parent 1c363d53
Publish repositories as Go modules and move the module path to rodent.software The module named a GitHub repository that does not exist, and a module path under the forge could not be fetched anyway: the go command resolves an import path by asking it for a go-import tag first, and the forge served only pages. Answer the <host>/<repository> discovery probe from the catch-all route with the repository's tag, naming its Git transport and that prefix, so a public repository is importable with no vanity service in front of the instance. Only a repository an anonymous reader can read answers: the tag is fetched without credentials, so a tag for a private repository would confirm its existence to anyone who guessed the name. The prefix host comes from public_url, never the request's Host header, for the same reason the clone URL does. With the path resolvable, rename the module to rodent.software/vole: imports, the build line in the getting-started guide, and the packaged units and metadata follow it. docs/go-modules.md explains the lookup, what the instance must have, and why a repository named after a route cannot claim the prefix.
server/integration_test.go +11−11
| @@ -25,16 +25,16 @@ import ( | |||
| 25 | 25 | ||
| 26 | 26 | "golang.org/x/crypto/ssh" | |
| 27 | 27 | ||
| 28 | "github.com/rodent-software/vole/ci" | ||
| 29 | "github.com/rodent-software/vole/ci/runs" | ||
| 30 | "github.com/rodent-software/vole/core/git" | ||
| 31 | "github.com/rodent-software/vole/forge/access" | ||
| 32 | "github.com/rodent-software/vole/forge/config" | ||
| 33 | "github.com/rodent-software/vole/forge/identity" | ||
| 34 | "github.com/rodent-software/vole/forge/index" | ||
| 35 | "github.com/rodent-software/vole/forge/repo" | ||
| 36 | "github.com/rodent-software/vole/metadata" | ||
| 37 | "github.com/rodent-software/vole/server" | ||
| 28 | "rodent.software/vole/ci" | ||
| 29 | "rodent.software/vole/ci/runs" | ||
| 30 | "rodent.software/vole/core/git" | ||
| 31 | "rodent.software/vole/forge/access" | ||
| 32 | "rodent.software/vole/forge/config" | ||
| 33 | "rodent.software/vole/forge/identity" | ||
| 34 | "rodent.software/vole/forge/index" | ||
| 35 | "rodent.software/vole/forge/repo" | ||
| 36 | "rodent.software/vole/metadata" | ||
| 37 | "rodent.software/vole/server" | ||
| 38 | 38 | ) | |
| 39 | 39 | ||
| 40 | 40 | // binPath is the binary under test, built once by TestMain. It is read by every test | |
| @@ -174,7 +174,7 @@ func TestMain(m *testing.M) { | |||
| 174 | 174 | } | |
| 175 | 175 | binPath = filepath.Join(dir, "vole") | |
| 176 | 176 | args := append([]string{"build"}, binaryBuildArgs()...) | |
| 177 | args = append(args, "-o", binPath, "github.com/rodent-software/vole/cmd/vole") | ||
| 177 | args = append(args, "-o", binPath, "rodent.software/vole/cmd/vole") | ||
| 178 | 178 | build := exec.Command("go", args...) | |
| 179 | 179 | build.Stdout, build.Stderr = os.Stdout, os.Stderr | |
| 180 | 180 | if err := build.Run(); err != nil { | |