<feed xmlns='http://www.w3.org/2005/Atom'>
<title>git/ci, branch jch</title>
<subtitle>Mirror of https://git.kernel.org/pub/scm/git/git.git/
</subtitle>
<id>https://git.shady.money/git/atom?h=jch</id>
<link rel='self' href='https://git.shady.money/git/atom?h=jch'/>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/'/>
<updated>2026-05-17T13:58:44Z</updated>
<entry>
<title>Merge branch 'jc/ci-enable-expensive' into jch</title>
<updated>2026-05-17T13:58:44Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2026-05-17T13:58:44Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=6bc53015ffeaabe98690d2d428f5a501f4464aba'/>
<id>urn:sha1:6bc53015ffeaabe98690d2d428f5a501f4464aba</id>
<content type='text'>
Enable expensive tests to catch topics that may cause breakages on
integration branches closer to their origin in the contributor PR
builds.

* jc/ci-enable-expensive:
  ci: enable EXPENSIVE for contributor builds
</content>
</entry>
<entry>
<title>Merge branch 'js/objects-larger-than-4gb-on-windows' into jch</title>
<updated>2026-05-17T13:58:41Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2026-05-17T13:58:41Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=06d915a85887e2500be0ed66f4411091d2bc2ed8'/>
<id>urn:sha1:06d915a85887e2500be0ed66f4411091d2bc2ed8</id>
<content type='text'>
Update code paths that assumed "unsigned long" was long enough for
"size_t".

* js/objects-larger-than-4gb-on-windows:
  ci: run expensive tests on push builds to integration branches
  t5608: mark &gt;4GB tests as EXPENSIVE
  test-tool synthesize: add precomputed SHA-256 pack for 4 GiB + 1
  test-tool synthesize: precompute pack for 4 GiB + 1
  test-tool synthesize: use the unsafe hash for speed
  t5608: add regression test for &gt;4GB object clone
  test-tool: add a helper to synthesize large packfiles
  delta, packfile: use size_t for delta header sizes
  odb, packfile: use size_t for streaming object sizes
  git-zlib: handle data streams larger than 4GB
  index-pack, unpack-objects: use size_t for object size
</content>
</entry>
<entry>
<title>Merge branch 'ps/test-set-e-clean'</title>
<updated>2026-05-11T01:05:54Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2026-05-11T01:05:54Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=6a5621b6047088e8d557ad45243cce620ccfd65f'/>
<id>urn:sha1:6a5621b6047088e8d557ad45243cce620ccfd65f</id>
<content type='text'>
The test suite harness and many individual test scripts have been
updated to work correctly when 'set -e' is in effect, which helps
detect misspelled test commands.

* ps/test-set-e-clean:
  t: detect errors outside of test cases
  t9902: fix use of `read` with `set -e`
  t6002: fix use of `expr` with `set -e`
  t1301: don't fail in case setfacl(1) doesn't exist or fails
  t0008: silence error in subshell when using `grep -v`
  t: prepare `test_when_finished ()`/`test_atexit()` for `set -e`
  t: prepare execution of potentially failing commands for `set -e`
  t: prepare conditional test execution for `set -e`
  t: prepare `git config --unset` calls for `set -e`
  t: prepare `stop_git_daemon ()` for `set -e`
  t: prepare `test_must_fail ()` for `set -e`
  t: prepare `test_match_signal ()` calls for `set -e`
</content>
</entry>
<entry>
<title>ci: enable EXPENSIVE for contributor builds</title>
<updated>2026-05-11T00:06:48Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2026-05-10T23:51:15Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=5ba82911bccc12d5ce2ccad98db935c9a0780cbe'/>
<id>urn:sha1:5ba82911bccc12d5ce2ccad98db935c9a0780cbe</id>
<content type='text'>
Earlier, we enabled EXPENSIVE tests for pushes to integration
branches. As we didn't have any CI jobs that run these tests, this
was a step in the right direction.

It however is an ineffective and inefficient use of the maintainer
time, which does not scale, to allow contributors to send changes
that are less tested at the list, only to force the maintainer
notice breakages caused by their changes but only after these
changes are mixed with changes from other contributors.  The
problematic topic needs to be isolated by bisecting, and it
historically has been done by the maintainer alone.

It is far better to let the problem identified early, preferably
before the problematic code leaves the hands of the original
developer.  In order for it to happen, the test coverage of the
contributor tests must be at least as wide as the coverage of the
integration tests.

Enable expensive tests for CI jobs triggered by pull requests.  This
will make each contributor take care of their own, which scales much
better.

Keep the expensive tests also enabled for the pushes of integration
branches, as that is the only place we can notice problems stemming
from mismerges and inter-topic interactions, even if the topics from
the contributors in isolation all passes these tests.

Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>ci: run expensive tests on push builds to integration branches</title>
<updated>2026-05-09T02:25:32Z</updated>
<author>
<name>Johannes Schindelin</name>
<email>johannes.schindelin@gmx.de</email>
</author>
<published>2026-05-08T08:16:49Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=7a094d68a27e321a99c8ab6b700909e503904bd9'/>
<id>urn:sha1:7a094d68a27e321a99c8ab6b700909e503904bd9</id>
<content type='text'>
Derrick Stolee suggested [1] that expensive tests should be run at a
regular cadence rather than on every PR iteration. Gate GIT_TEST_LONG
on push builds to the integration branches (next, master, main, maint)
so that the EXPENSIVE prereq is satisfied there but not during PR
validation, where the extra minutes of wall-clock time do not justify
themselves.

[1] https://lore.kernel.org/git/e1e8837f-7374-4079-ba87-ab95dd156e33@gmail.com/

Helped-by: Derrick Stolee &lt;derrickstolee@github.com&gt;
Assisted-by: Claude Opus 4.6
Signed-off-by: Johannes Schindelin &lt;johannes.schindelin@gmx.de&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>t: detect errors outside of test cases</title>
<updated>2026-04-22T22:53:36Z</updated>
<author>
<name>Patrick Steinhardt</name>
<email>ps@pks.im</email>
</author>
<published>2026-04-21T07:34:25Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=ffe8005b9d8e0cf1b5d5d796ca4da76fbe219011'/>
<id>urn:sha1:ffe8005b9d8e0cf1b5d5d796ca4da76fbe219011</id>
<content type='text'>
We have recently merged a patch series that had a simple misspelling of
`test_expect_success`. Instead of making our tests fail though, this
typo went completely undetected and all of our tests passed, which is of
course unfortunate. This is a more general issue with our test suite:
all commands that run outside of a specific test case can fail, and if
we don't explicitly check for such failure then this failure will be
silently ignored.

Improve the status quo by enabling the errexit option so that any such
unchecked failures will cause us to abort immediately.

Note that for now, we only enable this option for Bash 5 and newer. This
is because other shells have wildly different behaviour, and older
versions of Bash (especially on macOS) are buggy. The list of enabled
shells may be extended going forward.

Helped-by: Jeff King &lt;peff@peff.net&gt;
Signed-off-by: Patrick Steinhardt &lt;ps@pks.im&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>Enable Rust by default</title>
<updated>2026-04-10T00:25:36Z</updated>
<author>
<name>brian m. carlson</name>
<email>sandals@crustytoothpaste.net</email>
</author>
<published>2026-04-09T22:44:34Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=32d5b905909e781786c4735e6bd71503b23e4fb1'/>
<id>urn:sha1:32d5b905909e781786c4735e6bd71503b23e4fb1</id>
<content type='text'>
Our breaking changes document says that we'll enable Rust by default in
Git 2.54.  Adjust the Makefile to switch the option from WITH_RUST to
NO_RUST to enable it by default and update the help text accordingly.
Similarly, for Meson, enable the option by default and do not
automatically disable it if Cargo is missing, since the goal is to help
users find where they are likely to have problems in the future.

Update our CI tests to swap out the single Linux job with Rust to a
single job without, both for Makefile and Meson.  Similarly, update the
Windows Makefile job to not use Rust, while the Meson job (which does
not build with ci/lib.sh) will default to having it enabled.

Move the check for Cargo in the Meson build because it is no longer
needed in the main script.

Signed-off-by: brian m. carlson &lt;sandals@crustytoothpaste.net&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>ci: install cargo on Alpine</title>
<updated>2026-04-10T00:25:36Z</updated>
<author>
<name>brian m. carlson</name>
<email>sandals@crustytoothpaste.net</email>
</author>
<published>2026-04-09T22:44:32Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=40c789dfc250486e60b7d7cdba47d8423a754abf'/>
<id>urn:sha1:40c789dfc250486e60b7d7cdba47d8423a754abf</id>
<content type='text'>
We'll make Rust the default in a future commit, so be sure to install
Cargo (which will also install Rust) to prepare for that case.

Signed-off-by: brian m. carlson &lt;sandals@crustytoothpaste.net&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>Merge branch 'ps/build-tweaks'</title>
<updated>2026-03-27T18:00:01Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2026-03-27T18:00:01Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=d1f07dd50087bef18246feffb963d73b23e2cdd6'/>
<id>urn:sha1:d1f07dd50087bef18246feffb963d73b23e2cdd6</id>
<content type='text'>
Tweak the build infrastructure by moving tools around.

* ps/build-tweaks:
  meson: precompile "git-compat-util.h"
  meson: compile compatibility sources separately
  git-compat-util.h: move warning infra to prepare for PCHs
  builds: move build scripts into "tools/"
  contrib: move "update-unicode.sh" script into "tools/"
  contrib: move "coverage-diff.sh" script into "tools/"
  contrib: move "coccinelle/" directory into "tools/"
  Introduce new "tools/" directory
</content>
</entry>
<entry>
<title>contrib: move "coccinelle/" directory into "tools/"</title>
<updated>2026-03-19T13:40:08Z</updated>
<author>
<name>Patrick Steinhardt</name>
<email>ps@pks.im</email>
</author>
<published>2026-03-19T05:33:21Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=8ca1b4472ce97ae1d120608f9f02a86fa33d4187'/>
<id>urn:sha1:8ca1b4472ce97ae1d120608f9f02a86fa33d4187</id>
<content type='text'>
The Coccinelle tool is an ingrained part of our build infrastructure. It
is executed by our CI to detect antipatterns and is used to detect
misuses of certain interfaces. It's presence in "contrib/" is thus
rather misleading.

Promote the configuration into the new "tools/" directory.

Signed-off-by: Patrick Steinhardt &lt;ps@pks.im&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
</feed>
