ソースコード - Gitalyタッチポイント
RPC
Gitalyはgit
バイナリの git
ラッパーgit
で、Gitalyクラスタで動作 git
します。Goリモートプロシージャコール(RPC)を使用して、リポジトリをgit
格納するファイルシステムへのマネージドアクセスを提供 git
します。その他の機能として、アクセスの最適化、キャッシュ、ファイルシステムに対するページネーションがあります。
Gitaly貢献のための包括的な初心者ガイドは、Gitalyへの更新を行うことに焦点を当て、Gitalyコードを理解する方法について多くのインサイトを提供しています。
GitLabの他の部分からGitalyへのすべてのアクセスは、Createを通して行われます:ソースコードエンドポイントです:
Commit
モデル
Gitalyを呼び出すと、Gitcommit
の情報がメモリに格納されます。この情報はRubyCommit
モデルによってラップされます。これはGitlab::Git::Commit
のラッパーです。
Commit
モデルはActiveRecordオブジェクトのように振る舞いますが、PostgreSQLバックエンドは持っていません。その代わりに、Gitaly RPCにマップバックします。
堅牢なパッチ
歴史的に GitLab では、サーバーベースのgit
リポジトリへのアクセスは、libgit2
への Ruby バインディングを提供するRuggedRubyGem を通じて提供されてきました。これは、Rugged ライブラリの拡張セットである “Rugged Patches” と呼ばれるものによってさらに拡張されました。最もよく使われる RPC のいくつかの Rugged 実装は、機能フラグによって有効にすることができます。
RuggedアクセスにはNFSファイルシステムを使う必要がありますが、GitLabはGitalyクラスターを使う方向へ進んでいます。Ruggedは非推奨で削除される予定です。いくつかの大規模な顧客はまだNFSを使っており、現時点では具体的な廃止時期は予定されていません。