Что означает "фильтрация содержимого" при выполнении git-клона?

Я клонировал git-репо и заметил статусную строку Filtering content который был очень медленным. Это обычно не появляется. Что это?

remote: Enumerating objects: 30, done.
remote: Counting objects: 100% (30/30), done.
remote: Compressing objects: 100% (26/26), done.
remote: Total 16592 (delta 6), reused 9 (delta 4), pack-reused 16562
Receiving objects: 100% (16592/16592), 14.14 MiB | 1.01 MiB/s, done.
Resolving deltas: 100% (7529/7529), done.
Checking out files: 100% (11475/11475), done.
Filtering content:   6% (115/1729), 390.32 MiB | 1.12 MiB/s

2 ответа

Решение

В git Вы можете определить "фильтры", которые влияют на процесс перемещения файлов из индекса в рабочее дерево (фильтры "размазать") и из рабочего дерева в индекс ("чистые" фильтры). Обычно вы найдете файл.gitattribute, который связывает фильтры с файлами по определенным путям.

Раньше было так, что это всегда обрабатывалось файл за файлом во время checkout или же add операции. Может быть более эффективно обрабатывать все фильтры "smudge" для извлечения более пакетным способом, и git добавил поддержку для этого относительно недавно.

Вариант использования, который (я считаю) привел к тому, что это дополнение называется LFS. В LFS большой контент хранится во вторичном репо, а небольшие репозитории ("файлы-указатели") заменяют их в основном репо. Фильтр "smudge" загружает реальный контент и помещает его вместо файла указателя. Это наиболее вероятно, что делает ваше репо, и это может быть длительным процессом.

В целом, однако, строка состояния "фильтрация" просто означает, что на извлеченном котенте запускается пакет грязных фильтров.

В репозитории используется Git LFS, который является расширением git для управления версиями больших файлов вместе с репозиторием git.

https://git-lfs.github.com/ https://github.com/git-lfs/git-lfs/

Другие вопросы по тегам