| Age | Commit message (Collapse) | Author | Lines |
|
The 404 page names only the repository and nothing reached the log, so
a mistyped repo.path left no trace of the path cgit had tried.
|
|
Only a scanned repository fell back to its description file, so one
listed in cgitrc without repo.desc showed "[no description]" however
its file read. repo.desc may follow repo.path, so the file is read
where a page shows the description, which also spares every other
request the reads.
|
|
atoi reads "yes" or "true" as 0, so repo.hide=yes, or cgit.hide true
in a scanned repository's git config, silently did nothing. The values
keep that meaning, since honouring them now would hide repositories on
upgrade, but each one is logged with its file and line.
|
|
A missing or unreadable cgitrc left only "No repositories found" and an
empty log, the commonest first mistake with no trace of its cause. A
scanned repository's own cgitrc stays quiet, since most have none.
|
|
"The cache" promises that a negative ttl never expires, but no age was
ever below a negative cache-scan-ttl, so every request started a
background rescan.
|
|
readdir hands entries back in whatever order the filesystem keeps
them, so proj111 could come before proj105 and a section could start
twice. section-sort is off by default to keep the order written in
cgitrc, and a scan has none to keep.
|
|
Two cgitrc files sharing a cache-root read one list, so strict-export
and trust-scan-config set in one applied to the other, and a changed
setting stayed stale until the list expired. The first request after
an upgrade scans again, and the files under the old names are never
read.
|
|
getpwuid leaves errno alone for a uid with no passwd entry, so a scan
logged "Unable to read the owner" with "Success" as the reason for each
repository such a uid owns.
|
|
|
|
release_revisions frees revs->mailmap, and the log page points it at the
static list cgit_mailmap returns, so every log of a repository with
enable-mailmap aborted. A walk whose setup failed holds commits that are
already freed, so releasing it could free them twice.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
The log, refs and tag pages no longer open a filter of their own, so
they stop including filter.h.
|
|
|
|
|
|
The header's blob and pathspec checks move after the diff wrappers so
each group reads as one, and each static helper now sits directly above
its only user.
|
|
With the frees gone from shared.h, five page files need nothing else
from it, so they stop including it.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
No caller reads the result, and a void html_include fits the Lua
binding's callback as it is, so the wrapper that dropped it goes too.
|
|
|
|
QSORT skips a list of fewer than two entries, so an empty list's null
base never reaches qsort, which is what cgit_qsort was written for.
|
|
|
|
A failed truncate or key write returned with the descriptor still open,
so the lock was held while the page rendered uncached and the file was
left behind. It is removed before its last close, as every holder does.
|
|
process_slot logged every failure to lock, so each request that found
its slot being filled left a line, while refresh_slot logged none, so an
expired slot in a directory the server cannot write was served stale for
good without a word. lock_slot now logs the step that failed, as the
scan does, and leaves out only another request at work.
|
|
The slot lock has to be an flock, since an exec filter drops a record
lock when it closes the stdout a fill writes through. The scan only got
by with fcntl because nothing reopens its file while it runs. One kind
of lock lets the two share their code, and on Linux, where the kinds
never see each other, an flock on the scan's file now holds a scan off
like any other.
|
|
Each exec filter and snapshot compressor a fill runs inherited the
slot's lock descriptor beside the stdout it writes into. An flock lasts
until its last copy closes and nothing waits for a process a filter
leaves behind, so a fill killed before its rename could leave the slot
locked, and served stale or uncached, for as long as such a process
lived.
The scan holds its lock across no exec and opens the same way so that
the two stay alike.
|