以 pr-watch 回報 PR 現況並清理工作樹 #41
Notifications
Due Date
No due date set.
Depends on
#14 以 sdlc-fix 處理 PR 留言
plugins/tea-sdlc
#40 以 worktree 建立工作包分支並備妥隔離環境
plugins/tea-sdlc
Reference: plugins/tea-sdlc#41
Reference in New Issue
Block a user
母議題
#38 — 以 worktree 隔離平行工作包的實作與修正
要做出什麼
PR 開出去之後,開發者要能隨時問一句「這個 PR 現在怎麼樣、我還有什麼要做」,並且在它結束時不必記得回頭清理。
這一段交付兩支腳本。第一支回報 PR 現況:狀態、還有幾則留言沒處理、工作樹在哪、裡面有沒有未提交的東西,以及一個列舉值形式的建議動作。它是一次性、無狀態、冪等的——不是常駐程序也不是 daemon,「每隔多久跑一次」由呼叫端決定,本工具不長出排程器。
它不做變化偵測。「已處理」的判定基準是留言上的
+1reaction,那個狀態已經存在 Gitea 上,所以一份現況快照就足以回答「還有沒有事要做」,不需要跟上次的結果比較,也就不需要任何本機狀態檔。它只通知,不動手。偵測到有未處理留言時印出建議,不自動執行
/sdlc-fix:那會違反「不讓流程被模型自動觸發」,而且/sdlc-fix要求「不確定時詢問使用者」,非互動模式下那個詢問無處可去。唯一自動執行的副作用是清理工作樹,而且只在 PR 已合併或已關閉時。PR 被退回草稿時繼續監看且不清理——退回草稿代表還要繼續改,這時候那棵工作樹更需要留著。
第二支腳本是手動清理出口,處理那些永遠不會被合併也不會被關閉的 PR。兩支共用同一份移除實作(直接呼叫共用函式,不另起子行程)。清理只移除工作樹,本機分支與遠端分支都保留;工作樹內有未提交變更時明確中止並報出路徑,絕不加
--force——自動執行的東西只能做可逆的事。驗收標準
terminal、cleaned,以及列舉值形式的suggestedAction(run-sdlc-fix/cleanup/nothing-to-do/blocked-dirty)+1reaction/sdlc-fix,只輸出建議terminal: true並自動清理工作樹terminal: false、cleaned: false,且工作樹仍然存在git worktree remove,本機分支與遠端分支皆保留--force--dry-run輸出將執行的 git 指令與將發出的請求而不實際執行阻擋於