DSH: dsh/tests/run.sh чинит dsh/bundle/hooks в worktree #56

Closed
opened 2026-10-24 17:59:12 +03:00 by aep · 1 comment
Owner

Проблема

Машина настроена с core.symlinks=false, поэтому в новом worktree dsh/bundle/hooks (симлинк ../../hooks в индексе) выезжает обычным файлом с текстом ../../hooks. bash dsh/tests/run.sh в таком worktree даёт 5 падений: guard-main blocks a write on main, guard-main inspects bash commands on main, require-plan blocks src edits, guard-main blocks an edit on main, display resources and hook bridge exist. Воспроизвелось дважды (#41 и #53).

Что сделать

dsh/tests/run.sh перед прогоном проверяет dsh/bundle/hooks:

  • если это симлинк на ../../hooks или каталог — ничего не делает;
  • если обычный файл с содержимым ../../hooks — пересоздаёт симлинк (rm + ln -s) и печатает строку repaired dsh/bundle/hooks -> ../../hooks;
  • иначе — падает с понятным сообщением, а не пятью невнятными BLOCKED.

В git ничего не меняется (симлинк в индексе тот же), поэтому рабочее дерево остаётся чистым.

Приёмка

  • в worktree с «битым» bundle/hooks bash dsh/tests/run.sh зелёный (38/38) и печатает строку о починке;
  • на нормальном checkout поведение не меняется, git status чистый;
  • bash tests/run.sh — 630/630.
## Проблема Машина настроена с `core.symlinks=false`, поэтому в новом worktree `dsh/bundle/hooks` (симлинк `../../hooks` в индексе) выезжает обычным файлом с текстом `../../hooks`. `bash dsh/tests/run.sh` в таком worktree даёт 5 падений: `guard-main blocks a write on main`, `guard-main inspects bash commands on main`, `require-plan blocks src edits`, `guard-main blocks an edit on main`, `display resources and hook bridge exist`. Воспроизвелось дважды (#41 и #53). ## Что сделать `dsh/tests/run.sh` перед прогоном проверяет `dsh/bundle/hooks`: - если это симлинк на `../../hooks` или каталог — ничего не делает; - если обычный файл с содержимым `../../hooks` — пересоздаёт симлинк (`rm` + `ln -s`) и печатает строку `repaired dsh/bundle/hooks -> ../../hooks`; - иначе — падает с понятным сообщением, а не пятью невнятными BLOCKED. В git ничего не меняется (симлинк в индексе тот же), поэтому рабочее дерево остаётся чистым. ## Приёмка - в worktree с «битым» `bundle/hooks` `bash dsh/tests/run.sh` зелёный (38/38) и печатает строку о починке; - на нормальном checkout поведение не меняется, `git status` чистый; - `bash tests/run.sh` — 630/630.
Author
Owner

Закрыто в PR #58 (merge). dsh/tests/run.sh чинит dsh/bundle/hooks в worktree при core.symlinks=false и печатает строку о починке; на нормальном checkout поведение не меняется.

Закрыто в PR #58 (merge). `dsh/tests/run.sh` чинит `dsh/bundle/hooks` в worktree при `core.symlinks=false` и печатает строку о починке; на нормальном checkout поведение не меняется.
aep closed this issue 2026-10-24 18:04:59 +03:00
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: aep/claude-harness#56
No description provided.