Subject: Re: [PATCH 00/12] t: exercise Git/JGit reftable compatibility

From: Patrick Steinhardt <[email-masked]>
Date: Thu, 4 Apr 2024 15:37:37 +0200

On Thu, Apr 04, 2024 at 03:25:00PM +0200, Patrick Steinhardt wrote:
> Hi,
> 
> while the reftable backend is a recent addition to Git, it has been part
> of JGit since 2017 already. Given that there are essentially two
> different implementations of the reftable format now there is a very
> real risk of these two diverge and become incompatible with each other,
> which would be a shame.
> 
> This patch series addresses this risk by introducing compatibility tests
> which assert that both Git and JGit can access reftables written by the
> respective other implementation.
> 
> The patch series is structured as follows:
> 
>   - Patches 1-8 merge "install-docker-dependencies.sh" into
>     "install-dependencies.sh". This is done so that both CI job flavors
>     have the same dependencies and thus the same test coverage available
>     without always having to maintain them both.
> 
>   - Patch 9 makes JGit available.
> 
>   - Patch 10 starts running backend-specific tests in all jobs, and
>     patch 11 addresses a portability issue surfaced by this.
> 
>   - Patch 12 adds a very basic compatibility test suite for Git/JGit
>     reftables. I mostly consider this as a proof of concept, it should
>     likely be extended over time.
> 
> These compatibility tests surface three findings:
> 
>   - JGit does not support reftables format v2, which was added to
>     support the SHA256 object format.
> 
>   - JGit cannot read reflogs written by itself when starting from an
>     unborn branch. This smells like a bug in JGit to me where it
>     misinterprets reflog entries with a zero object ID as new OID, but I
>     didn't dig any deeper yet.
> 
>   - JGit is incompatible with split indices because it cannot handle
>     'link' DIRC entries. This is unrelated to reftables though.
> 
> I have tested the CI changes against both GitLab [1] and GitHub [2]. The
> macOS test failures on GitHub are caused by the recent curl regression.
> 
> [1]: https://gitlab.com/gitlab-org/git/-/merge_requests/123
> [2]: https://github.com/git/git/pull/1696
> 
> Patrick

Hrmpf, Cc'ing the jgit-dev@ list didn't work out as all my mails got
refused there due to myself not being signed up. Oh, well..

Patrick