AgeCommit message (Collapse)AuthorLines
Keep the query string across the about redirectsBryce Kwon-4/+9
The hop to the trailing-slash form of the about page, and the hop back to the summary of a repository without a readme, were built from the path alone, so a request for the about page of another branch landed on the default one. The query goes into the Location line as the client sent it, with any byte a header cannot carry percent-encoded.
Keep clone files and oversized responses out of the cacheBryce Kwon-6/+10
The dumb transport reads files that already sit on the disk, so a pack copied into a slot cost that disk twice and the request a second write of every byte. A snapshot took a slot whatever its size, so a visitor naming distinct refs and ids could fill the cache root with archives. `cache-max-slot-size`, 64 MB unless set, now serves a larger response from the lock file and drops it, along with any expired copy it would have replaced.
Harden the request path, scan and error recoveryBryce Kwon-1/+1
Clean up the whole treeBryce Kwon-9/+8
Fold `enable-stats` back into `max-stats`Bryce Kwon-1/+1
A `max-stats` period enables the page again, as it did before v2.2.0, so one key does both jobs.
Use standard HTTP reason phrasesBryce Kwon-2/+2
Mark the cache listing untrustedBryce Kwon-0/+4
Remove the repository homepage featureBryce Kwon-2/+0
Restyle the sources and fix the audit's findingsBryce Kwon-77/+85
Settle the names, types and layout of the sourcesBryce Kwon-7/+6
Drop the help tab and its built-in guideBryce Kwon-10/+0
Gate the stats page and add a language breakdownBryce Kwon-1/+4
`max-stats` only bounds the selectable periods now and no longer doubles as the enable switch. The tree walk runs before the history walk on purpose. Releasing commit memory while walking history resets each commit slab index, and a commit graph lookup afterwards would read another commit slot and walk the wrong tree. The stats fixture writes a commit graph so the tests cover that path. The history walk bounds the window in process rather than passing a formatted since date to `setup_revisions`, and parses each commit once.
Add a help page with common workflowsBryce Kwon-0/+10
Point the fork's links and credits at itselfBryce Kwon-1/+1
AUTHORS now records the upstream developers as the project's history rather than as maintainers of the fork.
Tolerate a missing or empty repository URLBryce Kwon-1/+2
`trim_end()` returns NULL when a repo url is empty or all slashes and the later newline trim dereferenced it. The legacy `r=` and `p=about` path also read the last byte of the url without checking it was set.
Gate the cache listing behind `enable-cache-list`Bryce Kwon-0/+6
The `ls_cache` page printed the cache directory path and the urls other visitors had requested, with no gate at all.
Reorganize into source, assets and librariesBryce Kwon-0/+208
The C sources move to source/, the served files to assets/, the bundled Git submodule to libraries/git and the filter scripts to extensions/. Everything the build generates now lands in build/, so a clean is a single remove and the tree stays clean.