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.
Docs: rewrite the README and organize the guides
520470e19cd906bd6fff987e2d132d793ce56486 · Keenan Nemetz · 16d ago · parent c5902451
Docs: rewrite the README and organize the guides Replace the long README with a landing page, split feature details into focused guides, and remove the roadmap and spike notes. Update comments that referenced them.
server/web/releases.go +6−7
| @@ -20,9 +20,8 @@ import ( | |||
| 20 | 20 | ||
| 21 | 21 | // archiveConc bounds concurrent compressed archives. Plain tar streams at | |
| 22 | 22 | // ~1 GiB/s and needs no bound; gzip is single-threaded per stream, and eight | |
| 23 | // concurrent gzipped archives of a 100 MiB tree cost 13 s of CPU (see | ||
| 24 | // docs/spikes/archive-streaming). Queueing a request is better than making every | ||
| 25 | // request late. | ||
| 23 | // concurrent gzipped archives of a 100 MiB tree cost 13 s of CPU. Queueing a | ||
| 24 | // request is better than making every request late. | ||
| 26 | 25 | const archiveConc = 4 | |
| 27 | 26 | ||
| 28 | 27 | // maxReleaseCommits bounds the "since the previous release" list. A release a | |
| @@ -86,10 +85,10 @@ func (w *Web) ReleaseView(rw http.ResponseWriter, r *http.Request) { | |||
| 86 | 85 | artifactBytes += a.Size | |
| 87 | 86 | } | |
| 88 | 87 | ||
| 89 | // git archive copies LFS pointer files verbatim (measured in spike D), so a | ||
| 90 | // tarball of an LFS repository holds shopping lists where the reader expects | ||
| 91 | // bytes. Saying so is cheaper than resolving pointers, and a silent pointer is | ||
| 92 | // the kind of surprise that costs an afternoon. | ||
| 88 | // git archive copies LFS pointer files verbatim, so a tarball of an LFS | ||
| 89 | // repository holds shopping lists where the reader expects bytes. Saying so is | ||
| 90 | // cheaper than resolving pointers, and a silent pointer is the kind of surprise | ||
| 91 | // that costs an afternoon. | ||
| 93 | 92 | lfsPointers := usesLFS(g, t.Commit) | |
| 94 | 93 | ||
| 95 | 94 | // Only an annotated tag has notes of its own; a lightweight tag's message is | |