Skip to content

feat: idd-tree-lock.sh acquire 靜默寫入目標 repo 的 tracked .gitignore——至少宣告,或改寫 .git/info/exclude(同 #192 的理由)(sister from plaud-mcp-connector#60) #346

Description

@kiki830621

Problem

scripts/idd-tree-lock.sh acquire(#183)在第一次取得 lock 時,會把 .claude/.idd/tree-lock 這行寫進目標 repo 的 tracked .gitignore(腳本 L97–L102「Self-add the lock to .gitignore」),但 stdout 沒有任何一行宣告這件事(idd-implement Step 0.4 只印 → tree lock acquired — solo on shared tree)。

結果:下游 idd-implement 走到 Step 4 scope guard 時,git status 冒出一個使用者沒動過的 M .gitignore。在本例(PsychQuant/plaud-mcp-connector#60,2026-09-15)我花了一輪 git diff 才確認來源,然後得決定它進哪個 commit——這正是 scope guard 該攔的「不明改動」,只是製造者是 IDD 自己。

Type

feature

Priority

P3

Expected

三選一(diagnose 定):

  1. 宣告(最小):acquire 寫入 .gitignore 時 stdout 印一行 → appended '.claude/.idd/tree-lock' to .gitignore (tree-lock state must not be tracked);idd-implement Step 0.4 的 case 0 把它轉印出來。
  2. 改寫到 .git/info/exclude:per-clone、不進 tracked 檔、不需要 commit——跟 feature: 偵測「clone 他人 repo」情境並建議非污染式 IDD setup(config 擺放 + .git/info/exclude) #192 third-party clone 的處置同一個理由(改對方的 tracked .gitignore = 在對方 history 疊 commit)。對自己的 repo 也適用:lock 是 per-machine session state,沒理由讓每個 clone 的 .gitignore 都多一行。
  3. 兩者都做:exclude 為主、宣告為輔。

傾向 2:git-ignore-block.sh 已經有 --direction exclude 的路徑(#192 在用),tree-lock 直接複用即可,不必新增機制。

Actual

靜默 append 到 tracked .gitignore;使用者在 scope guard 看到不明 diff。

Impact

Source: surfaced during /idd-implement PsychQuant/plaud-mcp-connector#60 reproduction (Step 5.7)

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions