Diff options
authorBryce Kwon <bryce@brycekwon.com>
committerBryce Kwon <bryce@brycekwon.com>
commit
parent
tree
download
Release v2.11.0 v2.11.0
Diffstat (limited to '')
-rw-r--r--CHANGE.txt95
-rw-r--r--Makefile2
2 files changed, 96 insertions, 1 deletion
diff --git a/CHANGE.txt b/CHANGE.txt
index 80befe5..2447c55 100644
--- a/CHANGE.txt
+++ b/CHANGE.txt
@@ -5,6 +5,101 @@ Notable changes to this fork, newest release first. History before v2.0.0
belongs to upstream cgit and is not covered here.
+v2.11.0 (2026-10-31)
+--------------------
+
+A release that cuts cgit back to a lean core. Nearly 300 commits take out dead
+code, repeated logic and stale comments across the sources, the stylesheet,
+the extensions, the tests and the docs, and fix the bugs found on the way. The
+caches now lock with flock throughout, so read the two upgrade notes under
+Changed before deploying, above all on a cache-root shared between hosts.
+
+Added
+.....
+
+* tools/build-release.sh builds on macOS as well as on Linux and the BSDs. It
+ probes its linker flags as it already did its compiler flags, and keeps full
+ RELRO wherever the linker offers it.
+* tools/build-development.sh uses whichever sanitizers the compiler offers,
+ falling back to UndefinedBehaviorSanitizer alone where AddressSanitizer is
+ missing, as on OpenBSD.
+* make get-git fetches, checks and unpacks git's tarball with the tools each
+ system ships, curl, wget, fetch or ftp, and sha256sum, shasum, sha256 or
+ openssl, piping xz to tar where tar cannot read it.
+
+Changed
+.......
+
+* The page cache and the cached repository list take the same lock, an flock
+ on a lock file opened close-on-exec. A request that finds a slot or the list
+ being rebuilt by another no longer logs "Unable to lock slot", while a real
+ failure to open, lock or write a lock file is logged with its path.
+* Upgrade note for Linux: a scan by the old binary still running when the new
+ one starts holds an fcntl lock that flock does not see, so one rebuild of
+ the repository list can be written by two processes at once. Delete the
+ rc-* files under cache-root once the new binary is in place, or upgrade
+ while no scan runs.
+* Upgrade note for NFS: on a mount with local_lock=flock or local_lock=all,
+ flock stays on each client, so hosts sharing one cache-root can rebuild the
+ same repository list at once, as the page cache always could. Give each
+ host a cache-root of its own on local disk.
+* The command line switches --repo, --page, --head, --oid and --ofs are gone.
+ They were undocumented, --query covers them, and --repo never selected a
+ repository.
+* syntax-highlight.lua colours a file only when Scintillua's detect() names a
+ lexer for it, and no longer guesses from the file extension. A Scintillua
+ without detect() leaves every file uncoloured but escaped.
+* about-render.lua no longer puts a data-lang attribute on fenced code or a
+ manpage class on man pages, since nothing styled or read either.
+* A line range such as #n10-n20 scrolls to where a single line lands, rather
+ than three quarters of the way down the window.
+* The truncation link of a side-by-side diff is underlined like the unified
+ one, and the login error takes the colour of the other error messages.
+* An empty repository's page no longer draws a Clone heading over no rows when
+ clone-url expands to nothing, which matches the summary page.
+* A corrupt repository whose root tree is missing lists as empty instead of
+ answering 404.
+* The diff page names a revision that is not a commit as the request wrote
+ it, and --version prints cgit in lower case.
+* The test suite writes its configs through shared helpers, and its duplicate
+ checks are gone.
+
+Fixed
+.....
+
+* The sample cgitrc placed scan-path ahead of about 30 settings that must
+ come before it, so uncommenting it where it stood silently dropped those
+ settings for every scanned repository.
+* With enable-commit-graph and follow both on, the log labelled the age column
+ Graph and lost its Age header.
+* The stats page dropped commits made on the window's first day earlier than
+ the time of the request.
+* The stats page handed a path starting with a colon to git as pathspec
+ magic, which the log, patch and feed pages refuse.
+* A snapshot of a repository whose url is ".git" or empty read past a buffer
+ while working out the snapshot's name.
+* The age labels skipped every other age when they moved to a coarser unit,
+ leaving some stale until the next pass.
+* post-receive.cgit-age printed an error and exited non-zero when it could not
+ write the age file. Like the other hooks it now says nothing and exits 0.
+* The auth filters failed every login on Lua 5.3 and later when
+ session_seconds was not a whole number, and accepted a few malformed
+ spellings of a valid cookie.
+* Filters and snapshot compressors inherited a stray copy of a cache slot's
+ lock, a refresh that could not take its lock went unlogged, and a slot whose
+ key could not be written stayed locked through the uncached render.
+* On FreeBSD, NetBSD and OpenBSD the build left Lua out, because those systems
+ name its package lua-5.4 or lua54.
+* Small leaks on the tree, refs, page header, log, snapshot and history walk
+ paths are closed.
+* The docs stated a few defaults and behaviours wrongly. virtual-root now
+ reads as defaulting to SCRIPT_NAME followed by a slash, and
+ enable-version-info, project-list and the server configs' asset links are
+ described as they work.
+* Two filter tests passed without their filter running, and several checks
+ matched text other than what they were after.
+
+
v2.10.0 (2026-10-29)
--------------------
diff --git a/Makefile b/Makefile
index 4b3b59c..cf5f31d 100644
--- a/Makefile
+++ b/Makefile
@@ -31,7 +31,7 @@ GIT_TARBALL = git-$(GIT_VERSION).tar.xz
# The defaults compiled into cgit and the directories make install writes to,
# all overridable through cgit.conf.
-CGIT_VERSION = v2.10.0
+CGIT_VERSION = v2.11.0
CGIT_SCRIPT_NAME = cgit.cgi
CGIT_SCRIPT_PATH = /var/www/htdocs/cgit
CGIT_DATA_PATH = $(CGIT_SCRIPT_PATH)