大規模リポジトリ管理を効率化するGit 2.51リリース、GitHubが主要機能を紹介
Git 2.51では、クラフトフリーMIDXやパスウォーク方式の導入によって大規模リポジトリ管理を効率化し、コマンド体系の整理が進展した。メジャーバージョンアップとなるGit 3.0を見据えた準備が進んでいる。
Gitプロジェクトは2025年8月18日(米国時間)、Git 2.51を発表した。これを受けてGitHubは同日、公式ブログで、Git 2.51の新機能として「クラフトフリーMIDX(Multi-pack Indexes)」「パスウォーク方式によるパック生成」「stashを通常のコミットログのように扱える機能」の3つを紹介した。
クラフトフリーMIDX
Git 2.51で「repack.MIDXMustContainCruft」設定が追加された。この設定により、不要になった到達不可能なオブジェクト(ブロブ、ツリー、コミット)を含む「クラフトパック」をMIDXの外部に格納することで、MIDX生成が軽量化され効率的に管理できるようになったという。MIDXサイズは38%削減され、生成速度は35%短縮、読み込み性能は5%向上した。
パスウォーク方式によるパック生成
パスウォーク方式は、Git 2.49で採用された「name-hash v2」に基づく圧縮アルゴリズムの発展形として、ファイルパスごとにまとめてオブジェクトを扱う仕組みだ。
Git 2.51で追加されたパスウォーク方式では、同一パス上のオブジェクト群を一括処理できるので、無関係なデータ同士を比較する無駄を避けられる。結果として、従来の方式と比べて小さなパック生成が可能になり、処理時間も抑えられるようになった。パスウォーク方式は再パック時に「--path-walk」オプションで利用できる。
stashを通常のコミットログのように扱える機能
従来、作業途中の変更を保存する「stash」は3つの親コミットによって管理されていたが、管理や移行が煩雑だった。Git 2.51では過去のstashを参照する親コミットをもう1つ追加し、通常のコミットログとして扱えるようになった。stashを単一の参照にエクスポートし、通常のブランチやタグと同じようにプッシュまたはプルできるようになり、複数の開発環境間での移行が容易になった。
コマンド体系の整理
従来は実験的扱いだった「git switch」「git restore」コマンドは安定版として確立し、コマンド体系がより整理された。「git whatchanged」コマンドは非推奨となり、Git 3.0で削除予定とされている。
Git 3.0に向けて、「reftable」バックエンドがリポジトリのデフォルトフォーマットになること、リポジトリを初期化する際にSHA-256関数がデフォルトハッシュになることが決まった。2025年はGit 1.0がリリースされてから20年の節目に当たる。Git 3.0の公式リリース日はまだ決まっていないが、メジャーバージョンアップへの準備は着々と進んでいるようだ。
Copyright © ITmedia, Inc. All Rights Reserved.