Папка Rsync, в то время как –exclude-from'ing .gitignore файлы на разных глубинах

Поэтому я пытаюсь работать с командой для rsync исходной папки со структурой:

- app.js - .gitignore - src/ - src/logs/ - src/logs/.gitignore 

Первый .gitignore будет игнорировать ряд файлов. Типичный материал. Второй будет выглядеть следующим образом:

 * !.gitignore 

Этот метод используется, когда вы хотите проверить в каталоге ни один из файлов внутри. В каталоге также может быть больше .gitignores – это только один сценарий. Поэтому мой вопрос заключается в следующем: возможно ли rsync интерпретировать все .gitignores относительно каталога, в котором они находятся?

Моя первоначальная попытка заключалась в следующем:

  1. Глобуйте все .gitignores в каталоге.
  2. Команда сборки выглядит примерно так:

rsync --exclude-from=.gitignore --exclude-from=src/logs/.gitignore --exclude-from=some/other/folder/.gitignore [source] [destination]

Однако для меня это не сработало. Все игнорируется, потому что он читает все файлы .gitignore, как если бы они находились в корне. Есть ли какой-либо возможный способ сделать это без необходимости grep для всех .gitignores и создать один главный файл с переписанными путями по отношению к корневому каталогу?

Благодаря!

Это говорит rsync посмотреть в каждом каталоге файл .gitignore :

 rsync --filter='dir-merge,-n /.gitignore' [...] 

Это должно делать то, что вы хотите.

-n после dir-merge означает, что ( - ) файл указывает только исключение, и ( n ) правила не наследуются подкаталогами.