| Age | Commit message (Collapse) | Author | Lines |
|
The listing judges binary by the first 8000 bytes, as git does, while
the blame page and the file view look for a NUL anywhere, since one
past that window would end a Lua filter's output early. The listing
keeps the cheap sniff, because the whole-blob check would inflate
every blob it names, so a file whose NUL lies past the window gets a
blame link that ends on "Blob is binary". The test pins that trade, so
a change to either side has to face it.
|
|
Chrome and Firefox already let an overflowing box take focus, with
their own ring, but WebKit does not. The table takes focus on a mouse
click as well, where focus-visible keeps the ring off.
|
|
The file view's table only sets the line numbers beside the code, and
the unified diff's is a single cell holding every file.
|
|
The tree page read the gitlink's commit as a blob, which outside the
repository is a bad object id and inside it is the commit's raw text.
|
|
The blame page answers 404 for a symlink, since git blames a regular
file alone, and it refuses a binary file and one past max-blob-size,
yet a tree listing offered blame for all of them, and so did a
symlink's own page. Each row already knows its size, and git calls a
file binary by its first 8000 bytes alone, which a stream reads
without inflating the rest. With blame on, a listing of 2,000
delta-packed files went from about 11 to 15 ms.
|
|
|
|
|
|
Git's pathspec item holds a const string now, so a path needs no
writable copy to be matched.
|
|
The diff page now names a revision that is no commit the way the
request wrote it, as the other pages already did, rather than as the
full id it resolved to. The helpers sit beside the error page in
ui-shared.c, since shared.c prints nothing.
|
|
|
|
|
|
A root tree that cannot be read now lists empty rather than answering
404, the way a folder below it already does.
|
|
A row whose first entry is itself a directory leaked that entry's name.
A level git could not read as a tree returned early instead, which also
left the row's log, stats and plain links on the deeper path.
|
|
Summary, about, log, refs, tag and stats pages shared one title, so
tabs, history and search results could not tell them apart. Titles now
read page, repository and site, with root-title as the site, and the
description stays in the meta description, where search engines read
it.
|
|
Both were empty, so a screen reader moving through the table announced
those columns with no name. An aria-label names them without adding
text to the page.
|
|
The HTML parser turns a carriage return with no line feed after it into
a line feed, and WebKit starts a new line at U+2028 and U+2029, while
git and the line numbers count line feeds alone, so each one set every
later line of the tree and blame pages a line below its number. CSS
Text makes vertical tab, form feed and next line forced breaks as well,
though no engine honours that yet. The escapes follow gitweb, which
shows control characters the same way.
|
|
Past fifteen single directories the row stopped after writing the next
separator, which left it ending in a dangling " / ".
|
|
A symlink to /etc/passwd was resolved against the tree and linked to
etc/passwd inside it, a different file or none at all.
|
|
The row stopped at the error and left its cells open, so the rest of the
listing rendered inside it.
|
|
|
|
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.
|
|
Five copies of the test and four of the error page had to agree by
hand. The new check pins the four refusals, which no test covered.
|
|
With these and the two changes before them, cgit builds under git's
DEVELOPER=1 settings, which also annotate their own callbacks this way.
|
|
The four pages that refuse a blob over max-blob-size each said it in
their own way, two of them in lower case, and the blame page ended its
binary notice with a full stop no other error carries.
|
|
|
|
|
|
|
|
|
|
A max-stats period enables the page again, as it did before v2.2.0, so
one key does both jobs.
|
|
|
|
A submodule row linked to a path with its trailing slash stripped,
was labelled by its path rather than its entry name, shared the
name's element with its hash, claimed a size of zero and offered a
blame button that cannot work on a gitlink.
|
|
|
|
|
|
|
|
On a phone the tree listing keeps name and size, the diff and stat
option panels hide, the owner line leaves the stacked masthead, and the
search, switcher and authors wait until they fit.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
The max-stats setting now only bounds the selectable periods 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.
|
|
|
|
AUTHORS now records the upstream developers as the project's history
rather than as maintainers of the fork.
|
|
The line-number gutter did one allocation and one write per line.
|
|
Only the tree view honoured the limit, and only after loading the whole
object. The default moves from unlimited to 10 MB so a fresh install
never buffers a huge object whole. Zero still turns the limit off.
|
|
A blob requested by ref with an unknown path fell through to the commit
object and was served with a 200 instead of a 404. Two error pages
passed a null pointer to a %s format when the request carried no object
id, and the error pages left the layout open.
|
|
A plain char is undefined in the ctype functions for negative values,
which a high byte produces wherever char is signed.
|
|
Highlighting previously required a source filter shelling out to
something like Pygments. A configured source filter still takes
precedence, every character is preserved so the line gutter stays
aligned, and large files are skipped.
|
|
|