git sparse-checkout игнорировать определенный тип файла

У меня есть репозиторий git с кучей больших csv, которые я не хочу клонировать, поэтому я наткнулся на git sparse-checkout и это сообщение: https://github.blog/2020-01-17-bring -ваш-монорепозиторий-до-размера-с-разреженной-кассой /

Из этого поста я взял следующее:

git clone --no-checkout https://github.com/john_doe/repo-with-big-csv.git
cd repo-with-big-csv
git sparse-checkout init --cone

Затем я редактирую .git/info/sparse-checkoutи добавьте следующее (адаптировано из примера на странице выше):

/*
!**/*.csv

Но похоже, что это не работает должным образом. Послеgit pullнекоторые папки клонированы, некоторые нет. Я также заметил предупреждение, когда яgit sparse-checkout list Я получил:

warning: unrecognized pattern: '**/*.csv'
warning: disabling cone pattern matching
/*
!**/*.csv

Как правильно игнорировать файлы определенного типа?

1 ответ

См. " Git sparse checkout с исключением" и обязательно используйте Git 2.26.x, в котором есть некоторые исправления для git sparse-checkoutкоманда.

В режиме конуса подкоманда git sparse-checkout set принимает список каталогов вместо списка шаблонов sparse-checkout.

Если core.sparseCheckoutCone=true, то Git проанализирует файл разреженной проверки, ожидая шаблонов этих типов. Git предупредит, если шаблоны не совпадают.

Вам нужно использовать только шаблоны ограничений на основе совпадений префиксов папок.


Frode Akselsen добавляет в комментариях:

мой пример действительно работает: папки, которые не отображаются, содержат только .csv файлов, следовательно, после применения правил в .git/info/sparse-checkout, в папке больше ничего нет, поэтому Git не отображает папку.

Я подтверждаю, что Git будет показывать только содержимое: если в папке нет файла (нет "содержимого"), указанная папка не отображается.

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