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.
Add file history and blame views
67a308badf4a88298639271a1201ff45cc3737a6 · Keenan Nemetz · 15d ago · parent f204e7ee
Add file history and blame views A blob's toolbar now links to the commits that touched its path and to per-line attribution. File history uses git log for the path, following renames for blobs; blame groups consecutive lines by commit and shows the author and age in a left column. Both are read-only and reuse the existing commit-link and escaping rules.
server/server.go +2
| @@ -189,6 +189,8 @@ func (s *Server) routes() *http.ServeMux { | |||
| 189 | 189 | mux.HandleFunc("GET /r/{name}/blob/{ref}/{path...}", w.Blob) | |
| 190 | 190 | mux.HandleFunc("GET /r/{name}/raw/{ref}/{path...}", w.Raw) | |
| 191 | 191 | mux.HandleFunc("GET /r/{name}/commits/{ref}", w.Commits) | |
| 192 | mux.HandleFunc("GET /r/{name}/commits/{ref}/{path...}", w.FileHistory) | ||
| 193 | mux.HandleFunc("GET /r/{name}/blame/{ref}/{path...}", w.Blame) | ||
| 192 | 194 | mux.HandleFunc("GET /r/{name}/commit/{sha}", w.CommitView) | |
| 193 | 195 | mux.HandleFunc("GET /r/{name}/issues", w.Issues) | |
| 194 | 196 | mux.HandleFunc("GET /r/{name}/issues/new", w.NewIssuePage) | |