Поведение tar --exclude-ignore не соответствует ожидаемому

Поведение tar --exclude-ignore не соответствует ожидаемому

Если у меня есть структура файла

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рекурсивно, что противоречит руководству.

Видимо, пока не исправлено.

Теперь также сообщаетсяв их багтрекере

Связанный контент