ソースコード - 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を使っており、現時点では具体的な廃止時期は予定されていません。