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.
Render the styled error page for every miss and failure
e84a66f5b53c269d8b0c207d0335b537e1646cb3 · Keenan Nemetz · 15d ago · parent f6f4b1db
Render the styled error page for every miss and failure Handler-level 404s now use the same view as the catch-all, including unknown detail resources and download paths. Internal 500s render the shared error layout and log the detail instead of exposing it. A panic before the first byte is recovered into that page; a partial response is left to net/http. Also mark label/assignee triage and inline review comments done in the UI plan, where the slice order was stale.
server/web/request_files.go +2−2
| @@ -123,7 +123,7 @@ func (w *Web) RequestFiles(rw http.ResponseWriter, r *http.Request) { | |||
| 123 | 123 | } | |
| 124 | 124 | req, err := metadata.GetRequest(m.Git(), r.PathValue("id")) | |
| 125 | 125 | if err != nil { | |
| 126 | http.NotFound(rw, r) | ||
| 126 | w.notFound(rw, r) | ||
| 127 | 127 | return | |
| 128 | 128 | } | |
| 129 | 129 | files, truncated, alreadyMerged := w.requestDiff(m, req) | |
| @@ -142,7 +142,7 @@ func (w *Web) RequestFiles(rw http.ResponseWriter, r *http.Request) { | |||
| 142 | 142 | } | |
| 143 | 143 | } | |
| 144 | 144 | if selected != "" && chosen == nil { | |
| 145 | http.NotFound(rw, r) | ||
| 145 | w.notFound(rw, r) | ||
| 146 | 146 | return | |
| 147 | 147 | } | |
| 148 | 148 | ||