AgeCommit message (Collapse)AuthorLines
Underline the truncation link in both diff viewsBryce Kwon-1/+1
The side-by-side view writes its note as a td.truncated, which the stylesheet already styles together with the unified view's div, but only the div's link was underlined.
Scroll a line range to where a single line landsBryce Kwon-2/+11
The anchors' scroll margin of half the window already centres a line scrolled to the top of the view, which is where the browser puts a single line. Asking to centre a range as well centred the margin with it, and in Chromium, WebKit and Firefox the first line of a range landed 73% of the way down the window against 49% for a single line.
Stop skipping ages as they change unitBryce Kwon-1/+7
getElementsByClassName returns a live collection, so an age moved to the next unit dropped out of it mid-loop and the age after it was skipped until the next pass, which can be a day away. On a cached page that has crossed a unit boundary every second age stayed stale. querySelectorAll returns a static list of the same elements.
Trim serve.py of a story and an unused parameterBryce Kwon-10/+5
Nothing passes parse_args an argv, since t0401 imports only split_cgi_output.
Trim the build script commentsBryce Kwon-17/+5
The release script described a -Wformat-nonliteral run it does not make, and the development script's header retold the flags below it.
Write the flags recipe the way the version one isBryce Kwon-3/+3
Its message also spells the project's name as cgit.
Trim and correct the build file commentsBryce Kwon-19/+9
The test rule's note on ordering predates .NOTPARALLEL, which covers it. The install paths are not compiled in, and a lowercase name is no easier to override than another.
Export only what the cgit build readsBryce Kwon-2/+1
CGIT_SCRIPT_PATH and CGIT_DATA_PATH are install paths, read only by the install and uninstall rules here.
Rewrap the max-ref-count commentBryce Kwon-2/+1
Spell customisation and uncoloured the British wayBryce Kwon-2/+3
Trim the trailer and cache-list entriesBryce Kwon-7/+4
The commit page finds the trailer block with git's own parser, and the entry's retelling of git's rule left out the cherry-pick lines.
Leave the mime.types format to its own docsBryce Kwon-4/+1
Fetch the Git submodule in one commandBryce Kwon-4/+2
Point each hook at the other hooks hereBryce Kwon-3/+6
The cache hook named only the age-file hook, from before the commit-graph hook came.
Drop config comments that restate their lineBryce Kwon-7/+2
Say each routing fact once in the server configsBryce Kwon-20/+16
Leave the filter prefixes to the filter preambleBryce Kwon-12/+7
The preamble above the filters explains lua: and exec:, and the repo.* filter entries already read "Value is a command."
Say minutes once in the cache ttl commentsBryce Kwon-12/+9
Drop the filter note from the cgitrc headerBryce Kwon-4/+0
The filter section names about-render.lua and the source-filter itself.
Quote every name under See alsoBryce Kwon-11/+14
End each MANUAL entry with its defaultBryce Kwon-41/+41
Trim the enable-http-clone entryBryce Kwon-12/+6
Say once which variables a macro can nameBryce Kwon-9/+5
Name the guarded settings in one placeBryce Kwon-9/+5
Point repo overrides at their global entriesBryce Kwon-15/+5
Trim the header notes in the server configsBryce Kwon-23/+7
Each config listed every header cgit sends, where only its own nosniff and strict policy on raw bytes bear on the headers set there. The list also missed Vary, and the Apache one called Apache a proxy.
Leave the filter contracts to the Filter APIBryce Kwon-35/+26
Each global filter entry restated the arguments and the stdin and stdout contract that "Filter API" gives in full. commit-filter and email-filter now name their shipped filters, as the others do.
Describe project-list as the file it namesBryce Kwon-1/+1
Say each css and js line holds one urlBryce Kwon-3/+3
Drop the snapshot format from the query commentBryce Kwon-1/+1
A snapshot's format comes from the suffix of its filename in the path, not from the query string.
Name every default asset link in the configsBryce Kwon-11/+11
The nginx sub-path recipe moved only the stylesheet and the logo, and left the script and the icon pointing at the domain root.
Say which versions enable-version-info namesBryce Kwon-6/+5
Only the footer carries the git version. The reason the versions stay out by default is left to MANUAL, which already gives it.
Document virtual-root's default of SCRIPT_NAMEBryce Kwon-7/+7
cgit falls back to SCRIPT_NAME followed by a slash when virtual-root is unset, so its links always take the path form and none take the ?url= form the docs described.
Move scan-path below the settings it inheritsBryce Kwon-7/+19
The quick start says to uncomment scan-path, and in its old place a scanned repository missed every setting below it, among them the filters, the snapshots and the enable flags.
Keep the age hook quiet when it cannot writeBryce Kwon-5/+30
Release v2.10.0 v2.10.0Bryce Kwon-1/+77
Rename CHANGELOG.txt to CHANGE.txtBryce Kwon-0/+0
Credit Git in the READMEBryce Kwon-0/+4
Declare each phony target beside its ruleBryce Kwon-9/+19
A list at the end of the file is easy to miss when a target is added or renamed.
Rename the release script to build-release.shBryce Kwon-1/+1
Named like build-development.sh, so the two sort together in tools/.
Add a development build scriptBryce Kwon-2/+49
cgit's objects are compiled by its own rule rather than git's, so they took no -MJ flag and a compilation database held only git's sources.
Fold the version script into its make recipeBryce Kwon-36/+17
gen-version.sh was only ever run by this one recipe, so tools/ now holds just the scripts a person runs.
Let long hashes and names wrap on a phoneBryce Kwon-0/+8
A blob header's hash and a commit's download names are single words wider than a phone's content area, so the whole main area scrolled sideways. The hash may now break anywhere, and below 640px a download name may too, while wider screens keep each name on one line with its signature.
Keep the commit-graph current in an example hookBryce Kwon-1/+57
cgit's log, blame and graph pages read commits from the commit-graph when a repository has one, and its changed path filters let a walk limited to one file skip the commits that never touched it. git gc writes a graph only now and then and starts those filters only when a write asks for them, so the hook writes a split layer with them after each push.
Drop only the cache a push makes staleBryce Kwon-28/+195
The hook cleared every slot on a push to any repository. cgit writes the request a slot answers at its head, so the hook now reads it back and drops only the pushed repository's pages and the index. It finds the repository's url from scan-path or hooks.cgiturl, and with neither it clears everything as before.
Pin the server configs to the releases they suitBryce Kwon-1/+7
Each names the branch it was written for and the release current at its last review, nginx 1.30.6 stable, Apache httpd 2.4.69 and lighttpd 1.4.85, as the projects' own sites listed them on 2026-10-29.
Note that the dumb http transport is a fallbackBryce Kwon-3/+7
Render the man pages that generators writeBryce Kwon-56/+298
DocBook, pod2man and hand written pages leaked roff onto the page: font escapes inside no fill blocks, comments, layout escapes such as \% and \c, the colours and half line moves around DocBook's links, and the requests and macro definitions their preambles open with. Those now draw nothing, the common named characters and strings render, .EX and pod2man's .Vb read as code, a .TP tag takes a line of its own and the alternating font macros switch fonts between their arguments. Anything rarer still falls back to its text.
Render more of the markdown seen in readmesBryce Kwon-19/+131
A line of equals signs or dashes under a paragraph now makes a heading of it, as on GitHub, instead of running into its text, and any other rule ends the paragraph. Four spaces or a tab start a code block, and an escaped pipe stays in its table cell. A link opening with two slashes or backslashes in any mix leads to another site, so it renders as text like the plain scheme relative one already did.
Keep a readme whole past a NUL byteBryce Kwon-8/+25
cgit takes filter output through a C string sink that stops at the first NUL, so a readme holding one lost everything after it. Each NUL now shows as U+FFFD, as a browser would show it.