Bootstrap the canonical label set in a repository #7
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Скрипт в
/tea:sync, который заводит в репозитории полный канонический наборlabels — все
type/*и всеseverity/*— за один прогон, предварительно сверивто, что в репозитории уже есть.
Spec
skills/issue/references/format.mdMotivation
Сейчас labels появляются побочным эффектом первого push:
ensure_labels(
skills/sync/scripts/_gitea.py:233) создаёт ровно те имена, которыевстретились в отправляемых issues. Пока не запушен ни один
type/bug, лейблаtype/bugв репозитории нет — отфильтровать по нему в веб-интерфейсе нельзя, ичеловек заводит руками свой
bugс чужим цветом и безexclusive. Набордоезжает до репозитория по кускам, месяцами.
Набор конечен и уже описан в доменной таксономии:
issue.TYPES(6) иissue.SEVERITIES(5) — 11 labels, цвета иexclusiveдля них лежат вmap.LABEL_COLORS/map.label_specs. Значит, это не решение, а прогон:завести всё сразу при первой работе с трекером репозитория.
Проверка «нет ли уже подобных» нужна не ради идемпотентности имён — по точному
имени
ensure_labelsи так не дублирует. Нужна ради похожих:bug,Bug,type: bug,kind/bug. Их нельзя ни трогать, ни считать своими — проних надо сказать человеку и остановиться, решение о переименовании чужого
лейбла не автоматизируется.
Acceptance criteria
skills/sync/scripts/labels.py, создающий всеtype/*иseverity/*из доменной таксономии за один прогонexclusiveберутся изissue.TYPES/issue.SEVERITIES/issue.EXCLUSIVE_NS, цвета — изmap.label_specs; ни один список имённе дублируется в новом скрипте
таким именем не создаётся повторно и не патчится
разделителя и хвоста после
/) печатаются как предупреждение с указаниемимени и id, и не изменяются
--dry-runпечатает план — что будет создано, что уже есть, что похоже —и не делает ни одного пишущего запроса
выходит с кодом 0
exclusiveу уже существующего лейбла показано ввыводе; исправление — только по явному флагу, не по умолчанию
skills/sync/SKILL.mdskills/issue/не изменёнConstraints
tech/*иcomp/*— они open-ended по формату исоздаются push'ем по факту использования.
--loginскрипт не принимает.