Skip to content

fix(git): git status が読めないとき worktree を clean と表示する #3435

Closed

Description

@Kewton

事象

getGitStatus(src/lib/git/git-status.ts:50)は git status --porcelain が失敗して null を返したとき、isDirty = statusOutput !== null && statusOutput.length > 0 により isDirty=false(clean) と報告する。

#3416(PR #3433)の調査で、本番ログの git:command-failed 127 件はすべて execFile の timeout(GIT_COMMAND_TIMEOUT_MS=1000ms)だった。ホストに負荷がかかると status --porcelain が 1 秒を超え、そのたびに 未コミットの変更がある worktree が clean と表示される(GitPane の 5 秒ポーリング、GET /api/worktrees/[id] など)。#3416 のワーカーが範囲外として報告した。

期待

status を読めなかったことと、clean であることを区別する(例: isDirty: boolean | null、または「不明」の状態を返す)。UI は「不明」を clean と表示しない。

受入基準

  • status --porcelain が失敗(timeout を含む)したとき、getGitStatus が clean を返さない(不明として返す)。テストで固定する
  • 呼び出し元(UI・API)が不明を clean と表示しない。型を変えるなら、写し(src/cli/types/、API の応答型、ja/en の文言)も合わせる
  • 成功時(clean / dirty)の表示は従来どおり
  • npm run lint・npx tsc --noEmit・対のテストが通る

分類

  • 原因の PR: 不明
  • 発見経路: orchestrate
  • 影響する経路: chat, terminal, mobile

Activity

  1. Kewton commented on Oct 8, 2026

    @Kewton
    OwnerAuthor

    PR #3440(develop マージ済み、本番サーバーに反映済み)で対応しました。skills の表示の残りは #3445 で追跡します。

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

    bugSomething isn't working

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions