Clone filters (partial clone)
--filter option to
git clone command, which filters out
large files and objects (such as blobs) to create partial clone of a repo.
Clone filters are especially useful for large repo and/or metered connection,
where full clone (without
--filter) can be expensive (as all history data
must be downloaded).
This requires Git version 2.22 or later, both on the Gitea server and on the client. For clone filters to work properly, make sure that Git version on the client is at least the same as on the server (or later). Login to Gitea server as admin and head to Site Administration -> Configuration to see Git version of the server.
By default, clone filters are disabled, which cause the server to ignore
To enable clone filters on per-repo basis, edit the repo’s
repository location. Consult
ROOT option on
repository section of
Gitea configuration (
app.ini) for the exact location. For example, to
enable clone filters for
/var/gitea/data/gitea-repositories/some-user/some-repo.git/config and add:
[uploadpack] allowfilter = true
To enable clone filters globally, add that config above to
of user that run Gitea (for example
Alternatively, you can use
git config to set the option.
To enable for a specific repo:
cd /var/gitea/data/gitea-repositories/some-user/some-repo.git git config --local uploadpack.allowfilter true
To enable globally, login as user that run Gitea and:
git config --global uploadpack.allowfilter true
See GitHub blog post: Get up to speed with partial clone for common use cases of clone filters (blobless and treeless clones), and Gitlab docs for partial clone for more advanced use cases (such as filter by file size and remove filters to turn partial clone into full clone).