#git #gitignore
У меня есть файл .gitignore следующего содержания: * !/.gitignore !CMakeLists.txt !*.cpp !*.hpp Согласно задумке он должен разрешать добавление: самого .gitignore в корне репозитория, файлов CMakeLists.txt в любых папках и подпапках, файлов формата .cpp и .hpp в любых папках и подпапках, а всё остальное запрещать. Однако разрешающие правила действуют только на файлы, расположенные в корне репозитория. И это, в принципе, логично: ФОРМАТ ПРАВИЛ Необязательный префикс «!», инвертирующий действие правила; любой подпадающий по него файл, исключённый правилами выше, будет включён обратно. Невозможно включить файл, если он находится в уже исключённой папке. Git не просматривает содержимое исключённых папок в целях оптимизации, а потому правила не распространяются на их содержимое. PATTERN FORMAT An optional prefix “!” which negates the pattern; any matching file excluded by a previous pattern will become included again. It is not possible to re-include a file if a parent directory of that file is excluded. Git doesn’t list excluded directories for performance reasons, so any patterns on contained files have no effect, no matter where they are defined. То есть первое правило, исключающее все подпапки, практически аннулирует действие разрешающих правил ниже. Вопрос: как надо правильно включать только файлы с определёнными расширениями вне зависимости от их расположения и уровня вложенности?
Ответы
Ответ 1
Можно сделать так: * !*/ !.gitignore !.gitattributes !.gitmodules !CMakeLists.txt !*.cpp !*.hpp Добавил ещё пару часто встречающихся файлов конфигурации git.Ответ 2
Скорее всего необходимо задвать правило указывая ** директорию. Например !**/*.hpp !**/*.cpp
Комментариев нет:
Отправить комментарий