Add support for treeless clones

What does this merge request do and why?

in !5485 (merged) I suggested to switch to blobless instead of shallow clones for GDK-in-box.

While working on that, I learned the existence of treeless clones, that could bring even more value for the GDK-in-a-box use-case.

I'm fully aware of the caveats and what was already experienced (e.g. !5027 (comment 2629824736)).

This MR doesn't change the current default behavior of GDK, it only allows the treeless clone feature to be used if someone would want to.

How to set up and validate locally

As the initial intent for this is to be used in GDK-in-a-box, the useful test would be to

run following steps:

cd support/gdk-in-a-box/container
cp ../../../packages_debian.txt ../../../.mise-version ./

docker build -t test_gdk_treeless .

If you really want to run this locally, you could run gdk install treeless_clone=true and verify you can run gdk update afterwards without issues.

Impacted categories

The following categories relate to this merge request:

Merge request checklist

  • This MR references an issue describing the change.
  • This change is backward compatible. If not, include steps to communicate to users.
  • Tests added for new functionality. If not, raise an issue to follow-up.
  • Observability added/updated (logging, metrics, tracing).
  • Documentation added/updated.
  • Announcement added for notable changes.
  • gdk doctor test added.

Merge request reports

Loading