| Age | Commit message (Collapse) | Author | Lines |
|
|
|
|
|
The mask only worked while TAB_WIDTH stayed a power of two.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
The cells of the Others row lose the empty class attribute they
carried.
|
|
|
|
|
|
|
|
repo_init_revisions already sets abbrev, commit_format and
show_root_diff to these values, and verbose_header is only read by
log_tree_commit, which the log and stats walks never call.
|
|
|
|
Every exit now goes through one label, which also clears the walk
arguments that the normal end used to leave allocated.
|
|
|
|
|
|
|
|
Its message also spells the project's name as cgit.
|
|
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.
|
|
A list at the end of the file is easy to miss when a target is added
or renamed.
|
|
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.
|
|
gen-version.sh was only ever run by this one recipe, so tools/ now
holds just the scripts a person runs.
|
|
The commit page draws no diff for a merge of three or more parents, so
the options above it changed nothing.
|
|
enable-version-info brings back the cgit and git versions that 3a00e19
took off the footer and the generator tag, for a site that wants them,
and the version 2a6726a put on the signature of patches now follows it
too. It stays off by default for the reason 3a00e19 gave.
|
|
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.
|
|
A plain script in the head held up parsing until it had downloaded and
run, though cgit.js only acts once the document is ready. Deferred
scripts still run in the order given and before DOMContentLoaded, so a
site script after cgit.js can still call window.cgit.
|
|
Its caption sat above the box, each select took its own width, and the
reload button hung indented under them. The caption is now the panel's
header strip, the selects and the button share one column at the width
of the widest select, and the labels lose their colons to match the
commit details.
|
|
The fold put a click between the reader and the signature, and the
browser's own disclosure marker and summary did not take the theme. The
signature prints as part of the message again, as it did up to v2.9.1.
|
|
The padding the table gained left an empty commit with a hollow frame
where the file rows would be.
|
|
The armour ran on for more lines than most tag messages, as part of the
message itself. git finds the signature for every kind it can sign
with, so PGP, SSH and X.509 all fold the same way.
|
|
The labels sat flush against the subject's last word, which made the
two one unbreakable run, so a narrow cell stranded a word on its own
line. A space now precedes each label and carries its gap, and a line
that breaks there drops it, so a wrapped label starts flush.
|
|
The ref rows always spanned five columns and the log three to five, so
with the default config the log and clone rows stopped 160px short of
the table's edge, and with any config the log rows did on a phone,
where they alone lost their counts. A column no cell began in also
made the summary and refs pages invalid HTML.
|
|
The bars were cells spanning up to 1000 columns of a nested table, which
kept them free of inline styles under a strict CSP but broke the HTML
table model, 18 errors on a commit page, and left Firefox's longest bar
short of the full width. An SVG canvas sized by its attributes is just
as safe under a CSP, validates, and draws every bar exactly to scale.
|
|
On a narrow screen the download column broke a snapshot name at a
hyphen or left its signature link alone on the next line. Each file and
its signature now stay together, and a line breaks only between them.
|
|
git format-patch ends each patch with the version of git that wrote it,
and the bare "cgit" that 3a00e19 left in its place said less. The
version is written as git writes its own, without the v of the tag, so
a release build signs with "cgit 2.9.0". The footer and the generator
tag still leave versions out.
|
|
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.
|
|
Git reads the global config for its trace settings before cmd_main is
reached, so the isolation there came too late and every request probed
$HOME/.gitconfig. The home-access test had passed on arm64 only because
access is no syscall of its own there, so it now traces every call that
takes a path.
|
|
Every list sorted here is null until its first entry, and C leaves a
null base undefined even with nothing to sort. glibc declares it nonnull
and its UBSan build aborted the stats page of a repository with no
commits in the window, which the Linux matrix caught.
|
|
The slot lock was a POSIX record lock, which a process loses the moment
any descriptor on the file closes, and the fill puts the lock file on
stdout, which every exec filter and snapshot compressor closes with its
dup2. A second request on the slot could then rebuild it under the first
and splice the two pages. An flock holds until the last descriptor goes.
|
|
The slot being filled was forgotten before the page's final flush, so a
write that failed there, on a full disk for one, could not abandon the
fill: cgit died into the lock file instead and the visitor got nothing.
The mid-page path already delivered the page from the lock file.
|
|
Both pages hand the diff to git, whose own limit on an inlined blob is
512 MB, so a commit adding a blob the other views refuse was inflated
and diffed in full. The cap is passed through to git, which shows such a
blob as binary.
|
|
A quoted header value escaped only the quote, the backslash, CR and LF.
A web server refuses a response whose header holds any other control
byte, so a file named with one could not be downloaded at all.
|
|
A ttl in the tens of millions of minutes overflowed the int it was
multiplied in.
|
|
The index stats the default branch below the repository to date it,
and a scanned repository sets its own defbranch, which was not held to
what a ref may hold, so one spelled as a path reached a file outside.
|
|
A tree can hold two entries of one name when fsck is off, and the walk
went on after the first answered: a second file put two responses in
one body, and a directory under the same name printed headers from the
mimetype string the first had already freed.
|
|
A signature is a note a pusher stored, and the download read it whole
without the size check every other blob a page inflates goes through.
|
|
The refs listing offers a tag's snapshot under the stem of its name, and
the lookup back from that name settled on whatever ref matched first,
so a branch spelled like the stem was archived in the tag's place. Every
candidate is now tried as a tag before any is tried as a branch.
|