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.
Let the browser edit issue and change details
a4e7a99a9ecf697586abdb884351a722fc25a864 · Keenan Nemetz · 6d ago · parent de84c32b
Let the browser edit issue and change details An issue's title and description could only be corrected with the CLI, and a change request's prose could not be corrected at all after it was opened. Add an edit page for each, offered to the author and to a maintainer. A change edit writes through a new metadata writer so the record is still validated, and neither edit touches the discussion, labels, or review state.
server/routes.go +4
| @@ -141,6 +141,8 @@ func (s *Server) repoRoutes(mux *http.ServeMux) { | |||
| 141 | 141 | mux.HandleFunc("GET /r/{name}/issues/new", w.NewIssuePage) | |
| 142 | 142 | mux.HandleFunc("POST /r/{name}/issues", w.CreateIssue) | |
| 143 | 143 | mux.HandleFunc("GET /r/{name}/issues/{id}", w.IssueView) | |
| 144 | mux.HandleFunc("GET /r/{name}/issues/{id}/edit", w.IssueEditPage) | ||
| 145 | mux.HandleFunc("POST /r/{name}/issues/{id}/edit", w.UpdateIssueDetails) | ||
| 144 | 146 | // One alias route for both kinds. `#42` in a body may name an issue or a | |
| 145 | 147 | // change request, and the index is what knows which. | |
| 146 | 148 | mux.HandleFunc("GET /r/{name}/n/{num}", w.NumberAlias) | |
| @@ -157,6 +159,8 @@ func (s *Server) repoRoutes(mux *http.ServeMux) { | |||
| 157 | 159 | mux.HandleFunc("GET /r/{name}/requests/new", w.NewChangePage) | |
| 158 | 160 | mux.HandleFunc("POST /r/{name}/requests", w.CreateChangeRequest) | |
| 159 | 161 | mux.HandleFunc("GET /r/{name}/requests/{id}", w.RequestView) | |
| 162 | mux.HandleFunc("GET /r/{name}/requests/{id}/edit", w.RequestEditPage) | ||
| 163 | mux.HandleFunc("POST /r/{name}/requests/{id}/edit", w.UpdateRequestDetails) | ||
| 160 | 164 | mux.HandleFunc("GET /r/{name}/requests/{id}/files", w.RequestFiles) | |
| 161 | 165 | mux.HandleFunc("GET /r/{name}/requests/{id}/files/{path...}", w.RequestFiles) | |
| 162 | 166 | mux.HandleFunc("GET /r/{name}/requests/{id}/runs", w.RequestRuns) | |