GitLab Orbit Localの仕組み
- プラン: Free、Premium、Ultimate
- 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated
- ステータス: ベータ版
GitLab Orbit Localは実験的機能です。GAリリース前に、機能およびコマンドの形式が変更される場合があります。
インデックス作成パイプライン
orbit indexを実行すると、GitLab Orbit Localは次の処理を行います:
.gitignoreの設定を尊重しながら、リポジトリのディレクトリツリーを走査します。- 各ソースファイルを、言語に応じたパーサー(rust-analyzer、tree-sitter、またはカスタムパーサー)に渡します。
- 定義(関数、クラス、モジュール)、インポート宣言、およびクロスファイルのシンボル参照を抽出します。
- 結果をノードとエッジとして
~/.orbit/graph.duckdbのローカルDuckDBファイルに書き込みます。
v2パイプラインはすべての言語パーサーを並列で実行します。中規模のリポジトリのインデックス作成は、通常数秒で完了します。
グラフモデル
GitLab Orbit Localはコードのみのグラフを構築します。GitLabへの接続がないため、SDLCデータ(マージリクエスト、パイプライン、ユーザー)にはアクセスできません。
ローカルグラフのノード:
- ファイル - リポジトリ内のソースファイル
- ディレクトリ - リポジトリ内のディレクトリ
- 定義 - 関数、クラス、モジュール、またはその他の名前付きシンボル
- ImportedSymbol - 別のファイルまたはパッケージからインポートされたシンボル
エッジは、ファイルとその定義、ファイルとそのインポート、および定義とファイル間で参照するシンボルを接続します。
クエリの実行
GitLab Orbit LocalはグラフをDuckDBデータベースとして公開します。orbit sqlを使用して、読み取り専用のSQLを実行できます:
orbit sqlは~/.orbit/graph.duckdbを読み取り専用で開きます。- SQLはグラフテーブルに対して直接実行されます。DSLのコンパイルや認可レイヤーは不要です。
- 結果はテーブル、JSON、NDJSON、またはCSV形式でストリーミングされます。
グラフ内のすべてのデータは、CLIを実行するユーザーがアクセスできます。
ストレージ
グラフは~/.orbit/graph.duckdbの単一のDuckDBファイルに保存されます。複数のリポジトリが同じデータベースを共有し、各リポジトリはマニフェストテーブル内のプロジェクトIDとブランチによってスコープが設定されます。
サポートされている言語
GitLab Orbit Remoteがサポートする13の言語はすべてローカルでもサポートされています:Ruby、Java、Kotlin、Python、TypeScript、JavaScript、Rust、Go、C#、C、C++、PHP、Bash/Shell。
完全な言語サポート表については、GitLab Orbitでデータをインデックス作成するを参照してください。
課金
GitLab Orbit LocalはGitLabクレジットを消費しません。すべての処理はローカルで行われます。