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:
-
gdk-reliability - e.g. When a GDK action fails to complete. -
gdk-usability - e.g. Improvements or suggestions around how the GDK functions. -
gdk-performance - e.g. When a GDK action is slow or times out.
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 doctortest added.