Редкая проверка, но исключить или игнорировать файлы в корне?
Документы для
git sparse-checkout
государственный,
По умолчанию при запуске git sparse-checkout init корневой каталог добавляется как родительский шаблон. На этом этапе файл разреженной проверки содержит следующие шаблоны:
/* !/*/
Однако я не хочу включать рут в
sparse-checkout
Я хочу что-то вроде
/directory_i_want
!/*
!/*/
Но это не работает, вместо этого возвращаюсь
предупреждение: нераспознанный шаблон:
/*
предупреждение: отключение сопоставления с образцом конуса
Таким образом, при разреженной проверке извлекается только один каталог наверху, а не файл в корне репозитория . Как я могу этого добиться?
1 ответ
Вы видите это, потому что включили
sparseCheckoutCone
. Из справки:
Допустимые шаблоны в наборе шаблонов конусов:
Рекурсивный: включены все пути внутри каталога.
Родитель: включаются все файлы, находящиеся непосредственно в каталоге.
В дополнение к двум вышеупомянутым шаблонам мы также ожидаем, что будут включены все файлы в корневом каталоге.
Однако он не включается автоматически, поэтому мне интересно, почему вы его установили. В любом случае, вы явно не можете использовать его, поскольку исключаете практически все, кроме. Прежде всего, отключите эту опцию:
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
в начале, а затем отрицать это с помощью
!/*/
. Это приведет к ошибке, говорящей что-то вроде:
ошибка: разреженная проверка не оставляет записи в рабочем каталоге