Редкая проверка, но исключить или игнорировать файлы в корне?

Документы для git sparse-checkout государственный,

По умолчанию при запуске git sparse-checkout init корневой каталог добавляется как родительский шаблон. На этом этапе файл разреженной проверки содержит следующие шаблоны:

       /*
!/*/

Однако я не хочу включать рут в sparse-checkout Я хочу что-то вроде

      /directory_i_want
!/*
!/*/

Но это не работает, вместо этого возвращаюсь

предупреждение: нераспознанный шаблон: /*

предупреждение: отключение сопоставления с образцом конуса

Таким образом, при разреженной проверке извлекается только один каталог наверху, а не файл в корне репозитория . Как я могу этого добиться?

1 ответ

Вы видите это, потому что включили sparseCheckoutCone. Из справки:

Допустимые шаблоны в наборе шаблонов конусов:

  1. Рекурсивный: включены все пути внутри каталога.

  2. Родитель: включаются все файлы, находящиеся непосредственно в каталоге.

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

Однако он не включается автоматически, поэтому мне интересно, почему вы его установили. В любом случае, вы явно не можете использовать его, поскольку исключаете практически все, кроме. Прежде всего, отключите эту опцию:

      git config core.sparseCheckoutCone 'false'

Далее восстанавливаем исходное репо:

      git sparse-checkout disable

И в конце выберите нужный вам узор с

      git sparse-checkout set directory_i_want/

Если вы сейчас посмотрите файл $GIT_DIR/info/sparse-checkout, вы увидите очень простой узор ( directory_i_want/) и этого достаточно. Считайте, что с sparse-checkout вы пробовали, важен порядок: нельзя поставить directory_i_want в начале, а затем отрицать это с помощью !/*/. Это приведет к ошибке, говорящей что-то вроде:

ошибка: разреженная проверка не оставляет записи в рабочем каталоге

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