Bug 59555

Summary: gear-store-tags: ложное предупреждение "Unrecognized option exclude=" для директивы tar
Product: Sisyphus Reporter: Ajrat Makhmutov <rauty>
Component: gearAssignee: Dmitry V. Levin <ldv>
Status: NEW --- QA Contact: qa-sisyphus
Severity: minor    
Priority: P5 CC: glebfm, ldv, legion, placeholder
Version: unstable   
Hardware: x86_64   
OS: Linux   

Description Ajrat Makhmutov 2026-06-16 12:17:13 MSK
gear-store-tags (он же gear-update-tag) сканирует .gear/rules, чтобы
определить, какие git-теги используются, и при этом игнорирует опции
директив, не относящиеся к тегам. Однако для tar-директив функция
find_tags_in_tar_options не считает опцию exclude= известной и выдаёт
диагностическое сообщение "Unrecognized option ... ignored", хотя:

* сам gear обрабатывает exclude= для tar корректно (см. parse_exclude_option);
* для diff-директив exclude= уже распознаётся
(find_tags_in_diff_options: ветка name=*|exclude=*).

То есть exclude= просто забыли добавить в список распознаваемых опций
для tar при добавлении его поддержки.

Сообщение безвредно (rules_info -> message, не fatal), теги сохраняются
корректно, но мусорит в выводе и сбивает с толку.

Steps to reproduce:

1. Создать пакет с .gear/rules, содержащим tar-директиву с exclude=:

tar.zst: .gear/vendor/chromium name=chromium \
exclude=.gear/vendor/chromium/third_party

2. Выполнить:

gear-update-tag -ac

Actual result:

gear-update-tag: .gear/rules line 3: Unrecognized option
"exclude=.gear/vendor/chromium/third_party" ignored

Expected result:

опция exclude= молча игнорируется при сканировании тегов
(как это уже сделано для diff-директив), без предупреждения.

Предлагаемое исправление — добавить exclude=* в ветку распознаваемых
опций find_tags_in_tar_options в gear-store-tags:

name=*|base=*|suffix=*|exclude=*)
;;