BT

Git 2.18がGitプロトコルバージョン2のサポートを追加

| 作者: Sergio De Simone フォローする 15 人のフォロワー , 翻訳者 編集部T _ フォローする 0 人のフォロワー 投稿日 2018年8月16日. 推定読書時間: 3 分 | ディスカッション

原文(投稿日: 2018/06/29)へのリンク

Gitクライアントの最新の公式バージョンであるGit 2.18でGitワイヤプロトコルのバージョン2が利用可能となった。バージョン2には、パフォーマンスとUIの向上を目的としたその他の新機能も含まれている。

Gitプロトコルバージョン2(v2)が数週間前にGitのマスターブランチに統合された。それは、コアチームメンバーのBrandon Williamsが公表した直前であった。Gitのワイヤプロトコルは、Gitクライアントとサーバが、clone、fetch、push操作をどのように伝達するかを定義している。この新しいバージョンは、パフォーマンスを向上させることを目的としており、将来の改善に適しているとWilliams氏は述べている。

新しいプロトコルの主な動機は、サーバ側で参照(ブランチとタグ)のフィルタリングを有効にすることでした。

つまり、Gitサーバは、リポジトリ内のすべての参照のリストをクライアントに送信し、クライアントにフィルタリングをさせる必要がない。大規模なリポジトリでは、クライアントが実行したい操作に関係なく、数MBのデータが転送される膨大な数の参照が存在する可能性がある。v2を使用する場合、Gitサーバはリストをクライアントに送り返す前に、必要な操作に基づいて参照をフィルタリングする。たとえば、Williams氏は、リモートでのコミットがいくつかしかないブランチを更新する場合、またはブランチが最新であるかどうかを確認する場合、参照のリスト全体を転送することは時間と帯域幅の無駄であると述べている。実際、Googleの内部でのv2の使用に基づいて、50万を超えるブランチやタグを含むChromeなどの大きなリポジトリでは、バージョン1に比べて最大3倍の高速アクセスが可能となるとWilliams氏は述べている。さらに、ref-in-wantsymrefのfetchやpushなどの新機能を使うことができる。

v2を使用しているGitクライアントは、それをサポートしていない古いサーバと通信することができる。これは、v2で必要とされる追加情報をサイドチャネルを使用して送信するという意識的な決定のおかげである。古いサーバは単にサイドチャネルを無視し、参照の完全なリストで応答する。

開発者が使用したいプロトコルのバージョンを選択できるように、Gitは次の例のように新しい-cコマンドラインオプションを追加した。

git -c protocol.version=2 ls-remote

v2をデフォルトにするように、Gitの設定を変更することができる。

git config --global protocol.version=2

パフォーマンスを改善することを目的としたGit 2.18のもう一つの新機能は、シリアライズされたコミットグラフである。基本的に、Gitはコミットグラフ構造をファイルに保存しており、グラフウォークを高速化するためのメタデータが追加されている。これは、コミット履歴の一覧表示やフィルタリング、あるいは、マージベースの計算に特に効果的である。この機能を実装したMicrosoftのチームのメンバーであるDerrick Stoleによると、LinuxカーネルやGit自身のような大きなリポジトリに対して実行すると、そのような機能を75~99%高速化することができる。Gitコミットグラフはまだ実験的である。その理由は、いくつかのGit機能は、浅いクローン、置換オブジェクト、コミットグラフトなどのコミットグラフでうまく動作しないためである。それらを必要としない場合は、git config core.commitGraph trueを実行してコミットグラフを有効にすることができる。

公式リリースノートでGit 2.18の全機能一覧を読んでください。

 

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント Watch Thread

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT