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.
Phase 7 slice 1: review on the web, so approving does not start with a clone
78912785b00227cffe3f8fb26b057cd60159a6b4 · Keenan Nemetz · 17d ago · parent 9bea7f11
Phase 7 slice 1: review on the web, so approving does not start with a clone Phase 7 is re-scoped: signing is deferred (the SSH handshake already establishes who pushed, and there is no third-party verifier here), and the phase is now about the experience of using the forge. - GET /r/<repo>/commit/<sha>: a commit's metadata and the patch it introduced, per-file hunks with line numbers; the commit list links to it - change requests show the same diff, computed three-dot: a review is what the branch adds since it diverged, not every commit main gained meanwhile - diffs are capped at 512 KiB and labelled when cut, binary files are named rather than faked, and every line is escaped (a <script> line is a test) - the repository README renders on its home page and markdown blobs render as markdown, through the sanitiser issues already use
internal/server/server.go +1
| @@ -141,6 +141,7 @@ func (s *Server) routes() *http.ServeMux { | |||
| 141 | 141 | mux.HandleFunc("GET /r/{name}/blob/{ref}/{path...}", w.Blob) | |
| 142 | 142 | mux.HandleFunc("GET /r/{name}/raw/{ref}/{path...}", w.Raw) | |
| 143 | 143 | mux.HandleFunc("GET /r/{name}/commits/{ref}", w.Commits) | |
| 144 | mux.HandleFunc("GET /r/{name}/commit/{sha}", w.CommitView) | ||
| 144 | 145 | mux.HandleFunc("GET /r/{name}/issues", w.Issues) | |
| 145 | 146 | mux.HandleFunc("GET /r/{name}/issues/{id}", w.IssueView) | |
| 146 | 147 | mux.HandleFunc("GET /r/{name}/requests", w.Requests) | |