Find the login pin from a git worktree #33
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.require_loginищет закреплённый логин, поднимаясь только отcwd(
skills/sync/scripts/_gitea.py:72). В git worktree, созданном рядом срепозиторием,
.claude/settings.local.jsonне является предком рабочейдиректории, и все скрипты слоя sync падают — при том что хук
tea-guardв тойже сессии логин находит.
Spec
skills/sync/scripts/_gitea.py:51-75
Steps to reproduce
Создать worktree за пределами каталога проекта — ровно так, как это делает
рабочий процесс с ветками:
Из worktree создать issue и попытаться опубликовать её:
Expected
Публикация проходит. Логин закреплён оператором для проекта, а worktree — это
тот же проект: хук
tea-guardв этой же сессии его находит и подставляет.Actual
Ошибка предлагает
/tea:auth, хотя логин закреплён и работает: сообщениеуводит к повторному закреплению вместо настоящей причины — путь поиска.
Два слоя ищут пин по-разному:
hooks/tea-guard.sh:120CLAUDE_PROJECT_DIR, затемcwdиз payload, затемos.getcwd()skills/sync/scripts/_gitea.py:72os.getcwd()Тот же слой уже решил ровно эту задачу для стора:
issue.store_rootидётвверх от
__file__, а не отcwd, именно чтобыcdничего не менял(
skills/issue/scripts/issue.py:56-70). Поиск логина остался наcwd.Обходной путь — звать скрипт worktree из каталога основного клона:
Он работает, но требует помнить про
--out: без него легко попасть в чужойстор, а стор оператора трогать нельзя.
Environment
../tea-worktrees//path/to/tea/.claude/settings.local.jsonpush.py;pull.py,comment.py,remote.py,labels.pyзовут тот жеrequire_loginAcceptance criteria
push.pyиз worktree находит пин основного клона и публикует issueместе
skills/issue/scripts/по-прежнему stdlib-onlyи ничего не знает о логине
/tea:authбез пина, где выход по-прежнему с ошибкой
Дубликат #24 — закрываю в его пользу.
Проблема поймана тремя независимыми агентами в один заход, поэтому каноническая
issue теперь несёт все случаи сразу: путь
issue_new.py→push.py, отдельныйremote.py, контраст с хуком, таблица «откуда каждый слой ищет пин», чтение.gitкак файла сgitdir:, и порчаbranch:обходным путём.Уникальные вклады этой issue перенесены в #24 целиком:
hooks/tea-guard.sh:120и_gitea.py:72;одном месте»;
skills/issue/scripts/по-прежнемуstdlib-only»;
--out: без него запись уходит в чужой стор;gitdir:-ветка поиска как решение.Покрытие тестами теперь тоже одно на все случаи — см. критерии в #24.