Uploaded image for project: 'Bitbucket Server'
  1. Bitbucket Server
  2. BSERV-11639

Add support for partial git clones (git clone --filter)

    XMLWordPrintable

    Details

    • UIS:
      400
    • Feedback Policy:
      We collect Bitbucket feedback from various sources, and we evaluate what we've collected when planning our product roadmap. To understand how this piece of feedback will be reviewed, see our Implementation of New Features Policy.

      Description

      Atlassian status as of May 2021

      Bitbucket Data Center 7.13 will enable using git clone --filter when paired with Git 2.18+ on the server. Which filters will be available will depend on the server's Git version, and is not something Bitbucket Data Center controls directly. For example, to use git clone --filter=tree:0 requires Git 2.20+ on both server and client. If Git <2.18 is installed on the server, git clone --filter will not be available.

      Partial clones will be enabled by default, if the server is running Git 2.18+. Administrators who do not want partial clones to be available can set plugin.bitbucket-git.hosting.allow-filter=false in bitbucket.properties to disable the feature, even if Git 2.18+ is installed on the server. For some instances disabling this may be desirable, because some filter combinations supported by Git are extremely expensive for the server to calculate and result in significantly higher server load than a normal full or shallow clone.

      Organizations that plan to make heavy use of partial clones should ensure their Git clients are 2.19 or newer. While Git 2.18 clients can use git clone --filter, 2.19.0 introduced a change which allows the server side to detect that requests after the first are part of a partial clone setup, which allows the server to avoid caching the resulting packs.

      Note: This is for Bitbucket Data Center only. Partial clones are still not possible for Bitbucket Cloud, which is a different system with a different codebase in a different language.

      Best regards,
      Bryan Turner - Principle Developer
      Bitbucket Data Center

      Original message

      Problem Definition

      A user needs to clone a large repository. If a user needs to work in a certain subdirectory of the repository, they are required to clone the entire repository. When a repository is large (Example: 1GB+) it can take some time to clone files that may not be required.

      Suggested Solution

      Since Git 2.18, Git protocol v2 has introduced the --filter flag to enable partial clones

      This will allow users to clone specific subdirectories of a repository only.

      Why this is important

      This will increase cloning performance on large repositories.

        Attachments

          Issue Links

            Activity

              People

              Assignee:
              bturner Bryan Turner
              Reporter:
              ephillips@atlassian.com Edward
              Votes:
              42 Vote for this issue
              Watchers:
              41 Start watching this issue

                Dates

                Created:
                Updated:
                Resolved: