| Age | Commit message (Collapse) | Author | Lines |
|
Each row of a followed log moves ctx.qry.vpath to the name its commit
knew the file by, and the pager built its links from that, so past a
rename both links named the old file and led to an empty page.
|
|
A followed log diffs each commit against its parent to learn whether
the file changed there, and a root commit was skipped rather than
diffed against the empty tree, so a file created in the first commit
never showed that commit.
|
|
Tag links carry the tag name as the head, so on any page reached from
an annotated tag the about tab vanished and the about page redirected
to the summary.
|
|
Links built from the repository url, among them the description link
on the index and the Atom and refs links, wrote it as configured, so a
name holding a space, '#' or '?' broke them. The feed link in the page
head did the same with the branch, which turned a '+' into a space.
|
|
Git 2.55 moved object sizes from unsigned long to size_t. The two are
the same type on 64-bit hosts, but not on a 32-bit one, where GCC 14
rejects the mismatched pointers, so cgit stopped compiling there.
|
|
Git's code there needs the kernel headers and its bundled regex, and the
build failed with nothing to say so.
|
|
cgit never shows Git's translations or runs its Tcl tools, yet building
needed libintl and msgfmt for one and, under make test, tclsh for the
other, which a musl system such as Alpine lacks.
|
|
A script raising anything but a string handed die a null to print, and
a Lua state that could not be created was used anyway once the filter
closed.
|
|
A script's top level runs before cgit hooks stdout for it, and the
unhook html() began with tripped an assert that aborted cgit.
|
|
luaossl from release 20260910 and luaposix load under Lua 5.5, and cgit
renders the same pages under it as under LuaJIT. Running the suites
there already caught a write to a for loop's control variable, which
5.5 makes read-only.
|
|
cgit builds against Lua 5.5 and serves the same pages with it, but a
host whose only Lua was 5.5 got a binary without Lua from the search.
|
|
cgit runs as a CGI, so no interpreter outlives its request, and the
lexers load once per process. The loop below already wrote nothing for
an empty blob.
|
|
Scintillua's detect reads the first line as well as the name, and
without it hooks, bin scripts and anything else lacking an extension
stayed plain.
|
|
An unedited copy sent every #123, Closes: and Bug: mark to
bugs.example.com, a link that is wrong for every site.
|
|
|
|
Without the prefix any host under the same domain could set a cgitauth
cookie of its own, signing a visitor in as someone else or out.
|
|
A session stayed good for its whole week after the password changed or
the account went away, which is when ending it matters most.
|
|
Required at the top, a missing luaossl or luaposix failed every request
to the site, public pages included, and each public page paid to load
both.
|
|
The one recipe given, SHA-512 from Debian's mkpasswd, cannot log anyone
in on OpenBSD, whose crypt checks only bcrypt, or on macOS, and
libxcrypt, which most Linux distributions use, recommends yescrypt
instead.
|
|
The fixed SHA-512 stand-in matched only the documented setup, so a site
hashing with yescrypt, other rounds or bcrypt answered for missing and
real names in different times, and on OpenBSD it failed at once.
|
|
SHA-crypt hashes the password in most of its rounds, so the 4 KB that
cgit's POST limit lets through cost about fifteen ordinary logins per
anonymous attempt.
|
|
Splitting the header with patterns that backtrack over spaces cost a
quarter of a second per request at the 8 KB line most web servers
allow, and a second at 16 KB, without any login. auth-file's trim had
the same shape and now reads the cookie as well.
|
|
The 13 pixel icon came out blurred on the high density screens most
phones and laptops have.
|
|
Gravatar's documentation now describes SHA-256 hashes on gravatar.com
alone, and Libravatar has long accepted them beside MD5.
|
|
A screen reader announced the service's name before every author.
|
|
An author email of 16,000 "<" took three quarters of a second per log
row, and one of 64,000 took twelve seconds.
|
|
The require at the top raised as cgit loaded the filter, so every page
that lists an author stopped at its first author cell with an error.
|
|
A line holding a pipe is never blank.
|
|
The footer lost the time it was generated at in 2018, and both runs
come from the same binary, so the two pages have nothing to differ in.
|
|
It was a bare table.list with no name, section or label, the one
listing that broke what the README promises a theme.
|
|
The README promised that t0005 checked them all, while fourteen went
unchecked, and three of its claims were too broad. A date shown in
full carries no age hooks, line anchors follow enable-tree-linenumbers
and cgit.css also styles html.cgit-standalone.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1456483 gated the key and named it under trust-scan-config, but this
section kept the list from before.
|
|
|
|
|
|
|
|
The manual has named the commit page since it was written in 2008, a
year after the index started linking the log instead.
|
|
A readme's links to its own sections, as in a table of contents, had
nothing on the page to land on.
|
|
|
|
Decoding them here instead would mean carrying every named reference
HTML defines, while the browser already knows them all.
|
|
|
|
|
|
The item's second line became a paragraph of its own and the items
after it a new list, so an ordered list started counting again.
|
|
A table written right under a line of text came out as more of the
paragraph, pipes and all.
|
|
GitHub shows a single newline in a markdown file as a space, and roff
fills the lines of a man page the same way, so text wrapped in the
source came out ragged on the about page.
|