コンテンツにスキップ

ワークスペースにリポジトリを追加

このガイドでは、Git チェックアウトをワークスペースに登録し、再インデックスし、再び削除する方法を説明します。

リポジトリはワークスペース単位です。グローバルなレジストリもリンク手順もありません。リポジトリを追加することと、それをワークスペースに置くことは同じ行為です。同じチェックアウトを2つのワークスペースに登録すると、2つの異なる id を持つ2つの独立した行になります。ワークスペースをまたぐ場合、リポジトリの同一性はそのファイルシステム上のパスであり、id では決してありません。

フォルダーを登録できるのは、次の3つすべてに当てはまる場合だけです。

  1. git ワークツリーの内部にある。
  2. そのワークツリーに origin リモートがある。
  3. origin リモートが対応しているコードホスト(github.com、gitlab.com、bitbucket.org)を指している。

それ以外は登録時に明示的なメッセージとともに拒否されます。「Folder is not inside a git work tree.」「No origin remote configured for this repository.」「The origin remote is not hosted on a supported forge (github.com, gitlab.com, bitbucket.org).」のいずれかです。ローカルのみのモードはありません。

コードホストはリモートから読み取られてリポジトリに保存されます。自分で選ぶことはありません。1つのワークスペースに3つのコードホストのリポジトリを同時に置くことができ、それぞれは独自の認証情報を持つ独自の API を通じてやり取りされます。GitLab のネストされた名前空間は保持されるため、gitlab.com/group/subgroup/project はオーナー group/subgroup、名前 project として登録されます。

フォルダーは、cc_server をホストしているマシン上で、そのサーバーの --repo-roots ディレクトリのいずれかの内側にある必要もあります。この許可リストの既定値はサーバーユーザーのホームディレクトリで、ルートより上を参照することは拒否されます。

  1. 設定 → ワークスペース → リポジトリを開きます(/workspaces/<id>/settings/workspace/repositories)。
  2. リポジトリを追加をクリックします。

このダイアログは、自分のものではなくサーバーのファイルシステムを参照する、ナビゲート可能なブラウザーです。デスクトップ、ウェブ、スマートフォンで同じ流れになります。ネイティブのフォルダピッカーでは、誤ったマシン上のフォルダーを選んでしまうからです。

  1. サーバーに設定されたルート内を移動します。git チェックアウトであるフォルダーには印が付きます。
  2. 任意の数のフォルダーにチェックを入れます。選択内容は移動しても保持されるため、複数のフォルダーからチェックアウトを集められます。
  3. それらを一括で登録します。

1つの選択が失敗しても、バッチの残りが取り消されることはありません。作成された id に加えて、拒否されたパスごとのエラーが返ります。このワークスペースにすでに存在するパスを再登録すると、重複を作らずに既存のリポジトリが返されます。

登録された各リポジトリは、リストに owner/name、コードホスト名を示すバッジ、サーバー上のパスとともに表示されます。GitHub のリポジトリはオーナーのアバターも表示します。ほかのコードホストには推測できるオーナーアバターの URL がないため、イニシャルにフォールバックします。

コードホストのバッジは混在したワークスペースで重要になります。2つのリポジトリが別々のコードホスト上で同じ acme/web を名乗ることがあり、レビューでできることやリンクの飛び先が異なります。

登録すると、このワークスペースにスコープされた RepoAdded イベントが発火し、そのチェックアウトの index_code パイプラインが開始されます。これがコードグラフを埋めるので、検索と影響分析が答えるべき対象を持てます。

同梱の文法がある言語のファイルだけがインデックスされます(Dart、JavaScript、TypeScript、TSX、PHP、Python、Rust、Zig、C、C++、Go、Java、Ruby、C#、Swift、Kotlin、R、Assembly、MATLAB、Ada)。コードグラフでコードを検索を参照してください。

各行にはコードをインデックスボタンがあります。クリックすると、そのチェックアウトのインデクサーが再実行されます。実行中はボタンが、完了ファイル数と合計を示す進行状況の表示に変わり、キャンセル操作が付きます。完了すると、シンボル数が付いたチェックに落ち着き、実行が失敗した場合は警告になります。

行のハンドルをドラッグします。設定した順序は、アプリ内のすべてのリポジトリリストが読み出す順序になります。

行のリンクアイコンをクリックすると、そのリポジトリの GitHub オーナーとリポジトリ名のエディターが開きます。リモートの名前が変わったり移転したりしたときに便利です。

  1. 設定 → ワークスペース → リポジトリを開きます。
  2. 行のゴミ箱アイコンをクリックします。
  3. 「ワークスペースからリポジトリを削除しますか?」を確認します。

ダイアログにはその動作が書かれています。「name はこのワークスペースから削除されます。ディスク上のローカルファイルは変更しません。」

削除すると、このワークスペースからリポジトリの行が消え、そのコードグラフの行(シンボル、エッジ、ファイル、インデックスのチェックポイント)が連鎖的に削除されます。さらに、そのリポジトリに対するメンバーごとの許可、スペースとリポジトリのリンク、分離チェックアウトの記録も削除されます。別のワークスペースに登録された同じチェックアウトは独立した行であり、影響を受けません。それらの記録が指していたディスク上のワークツリーは、この削除によって破棄されません。