
Если у меня есть структура файла
dir/
dir/.ignore
dir/file.ext
dir/subdir/
dir/subdir/other_file.ext
где dir/.ignore
содержит одну строку, *.ext
то я бы ожидал команду
$ tar -czvf dir.tgz --exclude-ignore=.ignore dir
чтобы получить , dir.tgz
содержащий dir/.ignore
и dir/subdir/other_file.ext
, но не dir/file.ext
.
Однако запуск этой команды с использованием GNU tar версии 1.34 (входит в состав Ubuntu 22.04) дает:
$ tar -czvf dir.tgz --exclude-ignore=.ignore dir
dir/
dir/subdir/
dir/.ignore
поэтому dir/subdir/other_file.ext
не включен в dir.tgz
.
На странице руководства написано:
--exclude-ignore=FILE Before dumping a directory, see if it contains FILE. If so, read exclusion patterns from this file. The patterns affect only the directory itself.
и конкретная альтернатива
--exclude-ignore-recursive=FILE Same as --exclude-ignore, except that patterns from FILE affect both the directory and all its subdirectories.
Но шаблон исключения в любом случае dir/.ignore
применяется dir/subdir
?
Предвосхищая очевидное: нет, случайно здесь .ignore
тоже dir/subdir/
нет.
решение1
Вероятно, ошибка,уже встречались.
Я нашел эту
--exclude-ignore
опцию и--exclude-vcs-ignores
действую.cvsignore
рекурсивно, что противоречит руководству.
Видимо, пока не исправлено.
Теперь также сообщаетсяв их багтрекере