Attach the current git branch to pushed issues #8
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
Gitea хранит у issue поле
ref— привязку к ветке. Научить/tea:syncеговозить: новое поле
branch:в файле issue, при пустом значении pushподставляет текущую ветку git.
Spec
none
Motivation
Ветка — то место, где работа по issue реально живёт, и Gitea умеет её
показывать. Сейчас
to_payload(skills/sync/scripts/map.py:163) собираетtitle,body,labels,assignees,milestone,state— и всё;refнеотправляется, а
from_apiего не читает. Привязку приходится ставить руками ввеб-интерфейсе, то есть не ставить никогда.
Автоподстановка текущей ветки покрывает обычный случай без единого флага: issue
заводят из рабочего дерева, в котором уже сделан checkout нужной ветки. Явное
поле оставляет выход для остальных: issue завели с
main, а работа пойдёт вдругой ветке — вписал руками, push не перетрёт.
branch:— поле sync-слоя, а не домена: значение берётся вызовом git иозначает ровно
refв Gitea. Домен проносит его через load/save вербатим, какgitea:иurl:, и никогда не читает — доменный слой не знает ни про git, нипро трекер.
Acceptance criteria
map.to_payloadкладётrefв тело запроса, когда у issue естьнепустой
branch:; при пустом поле ключrefне отправляетсяmap.from_apiзаписываетrefиз ответа вbranch:; pull синхронизируетзначение, выставленное на стороне Gitea
push.pyпри пустомbranch:подставляет текущую ветку(
git rev-parse --abbrev-ref HEAD) и после успешной записи сохраняет еёв файл issue
branch:push не перезаписывает — ни при create, ни при--updaterefпростоне отправляется, в stderr идёт предупреждение
branch:рендерится в блоке sync-полей, после доменных, и переживаеткруг load → save без изменений
skills/issue/не изменён:grep -rh '^import \|^from ' skills/issue/scripts/по-прежнему даёт только stdlib и не содержит
subprocessreferences/format.mdкак принадлежащееsync-слою, и в
skills/sync/SKILL.mdConstraints
Чтение текущей ветки — единственное обращение к git.
refв Gitea — свободная строка; существование ветки на сервере непроверяем.