What does “Filtering content” mean when doing a git clone?

In git you can define “filters” that affect the process of moving files from the index to the work tree (“smudge” filters) and from the work tree to the index (“clean” filters). Typically you’ll find a .gitattribute file that associates the filters with files at specific paths.

It used to be that this was always handled file by file during checkout or add operations. It can be more efficient to handle all of the “smudge’ filters for a checkout in a more batched manner, and git added support for that relatively recently.

The use case that (I believe) drove that addition is called LFS. With LFS, large content is stored in a secondary repo, with small placeholders (“pointer files”) replacing them in the core repo. The “smudge” filter downloads the real content and puts it in place of the pointer file. This is most likely what your repo is doing, and it can be a lengthy process.

In general, though, the ‘filtering’ status line just means that a batch of smudge filters is being run on the checked-out cotent.

Leave a Comment