Thanks to visit codestin.com
Credit goes to github.com

Skip to content

feature: 偵測「clone 他人 repo」情境並建議非污染式 IDD setup(config 擺放 + .git/info/exclude) #192

Description

@kiki830621

Problem / 動機

Original text(使用者原話):
「我覺得 idd 可以新增這個功能,如果是 clone 別人的 repo 要給建議的話,預先設定是這樣,idd 擺放的位置可能有不同設定」
— Source: /idd-issue 互動,2026-06-26

目前 Step 0.5.E 的 fork-aware detection 只區分兩條路:E1 非 fork(直接用 origin + 寫 config,不詢問)、E2 fork(問 Upstream / Own fork / Both)。但有一種常見情境沒被涵蓋:clone 他人的 repo 當參考 / 教學 / 研究素材(origin owner ≠ 你、不是你的 fork、你沒有 push 權限)。

此情境目前的行為缺口:

  • E1 把它當「不是 fork → 直接用 origin」,於是 issue 預設會被導向原作者的公開 repo(GitHub 公開 repo 任何登入者都能開 issue)→ 容易誤污染對方 issue tracker。
  • IDD 會把 .claude/.idd/local.json 寫進對方的 working tree,使用者得自己想到要用 .git/info/exclude 才不會把工具檔留在別人 repo 裡。
  • 完全沒有 guidance 告訴使用者「config 該擺哪、用哪種 ignore 機制」。

本 session 實例:clone kaochenlong/spectra-app + kaochenlong/sherly-app(HTTPS、無 push 權限)。手動設了 .claude/.idd/local.jsonpr_policy: never)+ 在 .git/info/exclude 擋掉 .claude/.idd/,才避免污染原作者 repo。這套推導應該變成 IDD 內建建議。

Type

feature / enhancement

Expected(提議行為)

新增「third-party clone」偵測 + 設定建議,接在 Step 0.5.E fork detection 旁:

1. 偵測 — origin owner ≠ gh api user login,AND 不是你擁有的 fork。更精準的訊號是無 push 權限gh api repos/{owner}/{repo} --jq .permissions.push = false → 標記為 third-party clone。

2. Issue routing 建議(AskUserQuestion,類比 fork 三選項):

選項 target 適合
Upstream(原作者 repo) origin 想直接回報 / 提問;提醒:公開可見
自己的 tracking repo you/xxx issue 進你名下,原作者 repo 完全不碰(接既有 candidates 機制)
Local-only 不開 GitHub issue

3. Config 擺放 / ignore 策略矩陣(對應「idd 擺放的位置可能有不同設定」):

情境 config 放哪 ignore 機制
自己的 repo .claude/.idd/local.json,可 commit 或全域忽略 視團隊慣例
他人 clone(本 feature) .claude/.idd/local.json(local) .git/info/exclude(per-clone、不 commit、不 push、不動對方 tracked 檔 / .gitignore
monorepo / 巢狀 walk-up config 放非 git 上層(如 references/x/.claude/.idd/ 同上

預設(third-party clone)→ 自動建議把 .claude/.idd/ 寫進 .git/info/exclude而非改對方 .gitignore(改 tracked .gitignore 等於在對方 history 疊 commit = 污染)。

4. pr_policy 預設 — third-party clone 無 push 權限 → 預設 pr_policy: never(local direct-commit),避免 idd-implement 嘗試 push 失敗。

Actual(現況)

  • Step 0.5.E E1 對「別人的 clone」與「自己的新 repo」一視同仁,直接用 origin、不給任何 ignore / routing 建議。
  • IDD config 預設寫進 cwd 的 .claude/.idd/,在他人 repo 內會成為 untracked 噪音,且無防呆阻止被 git add 進對方 working tree。

Impact

  • 降低「不小心把 IDD 工具檔留在 / issue 開到別人 repo」的風險(reference / 教學 repo 很常見)。
  • 把本 session 手動推導出的 best practice(.git/info/exclude + tracking 分流 + pr_policy: never)變成 IDD 內建 guidance,不用每次重想。
  • 與既有 fork-aware detection 正交:fork detection 處理「你的 fork」,本 feature 處理「純粹別人的 clone」。

Open questions

  • 判準用 owner mismatch 還是 push permission?(push permission 更準,但多一次 API call)
  • tracking repo 分流要不要自動建 / 沿用既有?(可接 config-protocol 的 candidates 機制)
  • .git/info/exclude 要不要做成跟 Stage 4.5 carve-out 同款的 idempotent helper?

相關

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