ダッシュボードにおける Git アイデンティティ¶
ダッシュボードはワークスペースの Git 状態を確認・管理するための第一級クライアントです。プロジェクトが Git リポジトリであるかの検出、コミット時に使用されるアイデンティティの表示、ローカルの user.name / user.email の編集をサポートします。また、ワークスペースがまだリポジトリでない場合は、UIから git init を実行できます。
機能の境界¶
- ローカルスコープのみ制限。 ダッシュボードから
--global設定が書き込まれることはありません。グローバルなフォールバック用のアイデンティティを設定したいユーザーは、アプリ外で設定する必要があります。 - コミットは作成しません。
git initは最初のコミットを作成しません。ブランチ名、gitignore、および最初のコンテンツはユーザーの判断に委ねられます。 - 適用値のアイデンティティ表示は読み取り専用。 ヘッダーチップとモーダルには、解決された設定チェーン(
local > global > system)が表示されますが、ダッシュボードから書き換えられるのはローカルスコープ(local)のみです。
エンドポイント¶
| メソッド | パス | 用途 | 認証 |
|---|---|---|---|
| GET | /api/git/status |
{ isRepo, root?, headBranch?, hasCommits?, reason? } |
ローカル |
| GET | /api/git/config |
{ effective, local } — isRepo が必要 |
ローカル |
| POST | /api/git/config |
ローカルの user.name / user.email の書き込み。空文字は設定解除 |
ローカル + CSRF |
| POST | /api/git/init |
プロジェクトルートでの git init の実行(冪等) |
ローカル + CSRF |
hasCommits は、git rev-parse --verify HEAD が成功した(最初のコミットが存在する)場合にのみ true になります。モーダルでは、エラーになるはずのワークツリーモードでの起動(ブランチを切るための HEAD が必要)の前に警告を表示するためにこの値を使用します。
WebSocket: 変更処理が成功すると、{ type: "git-status-updated", gitStatus } イベントが送信されます。
シェルスコープでの適用¶
ヘッダーチップとアイデンティティモーダルは、local-server(ブラウザ起動)および Electron シェルにのみマウントされます。VS Code 拡張機能 シェルでは、VS Code 独自のソース管理パネルにこの処理を委ねるため、表示されません。検出は web/src/runtime/shell.ts 内で、typeof window.acquireVsCodeApi === "function"(最上位ウェブビューのチェック)と ?vscode=1 URL フラグ(React アプリが実際に動作しているネストされた iframe において、acquireVsCodeApi が注入されない場合のチェック)を組み合わせて行われます。
エージェントランナー(ワークツリー)との連携¶
git worktree add を実行するには、Git リポジトリが必要です。Start フロー自体は、事前に gitStatus.isRepo で完全にブロックすることはしません。ディスパッチャースキルが埋め込みターミナルで git worktree add を実行し、そこで発生した失敗を表示します。UI が事前に検知して表示するシグナルは以下の通りです:
!isRepoの場合の、チップ上の警告ドット。!hasCommitsの場合の、モーダルの警告バナー("Worktree-mode Start needs a HEAD to branch from" —web/src/components/GitIdentityModal.tsx参照)。- 非リポジトリのワークスペースを救済するための、モーダルでのワンクリック
git initの提供。
ソースのレイアウト¶
| パス | 役割 |
|---|---|
server/git/status.ts |
.git ディレクトリ存在チェックの高速パス + git rev-parse 検出 |
server/git/config.ts |
--show-scope --get 解析と、シリアライズされたローカル書き込み |
server/git/init.ts |
冪等な git init 実行と、その後のステータス再読み込み |
server/index.ts |
4つのエンドポイント定義 + WebSocket での git-status-updated 通知 |
web/src/runtime/shell.ts |
isVsCodeShell() による VS Code 環境かどうかの判定 |
web/src/components/GitIdentityChip.tsx |
ヘッダーチップコンポーネント |
web/src/components/GitIdentityModal.tsx |
モーダルコンポーネント(2つの状態) |