features:
  secondary:
    - name: "Enable Git delta islands core"
      available_in: [core, starter, premium, ultimate]
      documentation_link: 'https://gitlab.com/gitlab-org/gitaly/blob/master/doc/delta_islands.md'
      reporter: jramsay
      stage: create
      categories:
        - "Gitaly"
      issue_url: 'https://gitlab.com/gitlab-org/gitaly/issues/1519'
      description: |
        Depending on the structure of a Git repository's packfile on disk, cloning can be CPU- and memory-intensive because Git may need to build and compress a packfile on the fly. Extreme CPU and memory use can occur when a large repository is cloned many times simultaneously, for example during a parallelized CI pipeline. However, if you trigger packfile reuse, instead of constructing the response on the fly, Git streams the packfile directly from disk, eliminating most CPU and memory usage of the clone.

        In GitLab 12.8, when repacking repositories, a [delta island core](https://gitlab.com/gitlab-org/git/blob/f1d4a28250629ae469fc5dd59ab843cb2fd68e12/Documentation/config/pack.txt#L35) is created that contains all the reachable branches and tags so that packfile reuse is triggered when cloning a Git repository. GitLab performs repacks automatically for active repositories, but they can also be triggered manually by clicking **Run Housekeeping** in the projects General Settings. Note, when using a shallow clone strategy for CI, packfile reuse will not be triggered.
