| Age | Commit message (Collapse) | Author | Lines |
|
XDF_NEED_MINIMAL turns off the cost limit in xdiff, so a file whose
lines were reordered took time quadratic in its length: 2.1 s for one of
40000 lines, now 38 ms. Git leaves it off by default as well.
|
|
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.
|
|
ISO C has no conversion between a function pointer and void *, so the
callbacks handed through git's data pointers and the write found by
dlsym stopped the pedantic half of a DEVELOPER=1 build.
|
|
Git's DEVELOPER=1 build turns on -Wwrite-strings as an error, and the
literals stored through plain char pointers failed cgit's own objects
there. The exec filter's argv takes the cast execvp needs once, the
way git's run-command does.
|
|
Only a hash in the first column marked a comment, so an indented one
was read as the type "#" for every word after it. The manual already
describes comments by their first non-blank character.
|
|
The guard took local as a name that may carry the -local suffix, but
git reads local only as a whole alias of default-local and dies on
anything after it, so that one value turned every page into a 500.
|
|
trust-scan-config passed any readme holding a colon as a tracked file,
while the parser takes one only when a path follows the colon, so a
scanned repository could still name a file on disk outside itself. The
two now share one test.
|
|
The field resets at the end of cgit_add_repo cleared the ignore flag
that the empty url branch had just set, so such a repository was
listed on the index and selectable with ?r=, where every link to it
read the byte before its url.
|
|
A commit whose encoding header names something iconv cannot convert,
or whose text is labelled UTF-8 without being it, reached a page
declared UTF-8 with its bytes untouched. The atom feed already
replaced them, so its UTF-8 reader moves to shared.c and every ident,
subject, message and tag text passes through it.
|
|
The diff and patch pages honour the path in the url, which the
parameter table documents for every page, but rawdiff never handed it
to git and answered with the whole diff.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
noplainemail enable-plain-email
noheader enable-header
cache-root-ttl cache-index-ttl
cache-repo-ttl cache-summary-ttl
cache-scanrc-ttl cache-scan-ttl
agefile age-file
renamelimit rename-limit
extra-head-content head-content
|
|
A `max-stats` period enables the page again, as it did before
v2.2.0, so one key does both jobs.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
The diff family inflated a blob of any size just to render it. A file
over the limit is reported as binary instead.
|
|
A dangling or unreadable ref was described through a null object.
|
|
`max-stats` only bounds the selectable periods now 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.
|
|
`read_in_full` returns a signed -1 on error, which became SIZE_MAX once
stored in the size_t length and then wrote a terminator far out of
bounds.
|
|
`trim_end()` returns NULL when a repo url is empty or all slashes and
the later newline trim dereferenced it. The legacy `r=` and `p=about`
path also read the last byte of the url without checking it was set.
|
|
The C sources move to source/, the served files to assets/, the bundled
Git submodule to libraries/git and the filter scripts to extensions/.
Everything the build generates now lands in build/, so a clean is a
single remove and the tree stays clean.
|