Git игнорировать все, кроме одного типа файлов, в любом месте вниз - PullRequest
0 голосов
/ 03 октября 2018

Моя цель - написать файл .gitignore, который будет игнорировать все на любом уровне вниз, кроме:

*.xxx
*.yyy

в текущем каталоге (где находится .gitignore) и

*.xxx

где угодно - на любом уровне - в дереве ниже.

Другими словами, я хочу сохранить в git *.xxx на любом уровне, а также *.yyy на корневом уровне.Все остальное следует игнорировать.

Имя подпапок неизвестно, поэтому я не могу заключить их в файл gitignore.

Я пробовал много альтернатив, но пока безуспешно: например:

#ignore everything in any subdirectory
*
*/**
#expect some files:
!*.yyy
!*/**/*.xxx

Мне кажется, что я наложил ограничение:

"Невозможно повторно включить файл, если исключен родительский каталог этого файла" *

в git ignore doc ... Есть ли способ обойти это ...?

1 Ответ

0 голосов
/ 04 октября 2018

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

# blacklist everything
*

# whitelist all content ending with slash (directories)
!/**/

# finally whitelist all files with valid extension in the entire repo
!*.xxx
!*.yyy
# ignoring the ones that are only allowed within the repo root
*/**/*.yyy
...