Git 2.52 の新機能: コマンド、パフォーマンス、セキュリティ

  • 新しいコマンド: git last-modified、git repo、一般的な操作のための git refs への追加。
  • メンテナンスの改善: Git メンテナンスの幾何学的タスクと複数のパフォーマンス最適化。
  • セキュリティ進行中: SHA-1/SHA-256 の相互運用性に向けた最初のステップと、次のメジャー リリースでのデフォルトの「main」への変更。
  • その他のユーティリティ: Bloom フィルターの改善、sparse-checkout clean、コミット グラフ、stash、diff-tree の新機能。

git 2.52

Git 2.52 現在利用可能 この人気の分散型バージョン管理システムの安定版アップデートとして、 新機能、メンテナンス調整、パフォーマンスの改善 94 名を超える協力者の作業の成果であり、そのうち 33 名はこのプロジェクトに初めて参加しました。

最も注目すべき変更点としては、リポジトリ探索用の新しいサブコマンド、よりスマートなメンテナンスワークフロー、そしてSHA-256への移行に向けた進捗などが挙げられます。これらはすべて、一貫性があり控えめなアプローチで提供されており、 実用的なアプローチ さまざまなサイズのリポジトリを管理します。

リポジトリを探索するための新しいgit 2.52コマンド

最も目を引く新しさは git last-modified各パスにアクセスした最新のコミットを効率的に取得するように設計されています。多数のエントリを持つリポジトリでは、このアプローチにより履歴の繰り返しを回避でき、 ls-tree + log の連鎖よりも数倍高速内部テストによれば、実際のシナリオでは時間を数秒から数ミリ秒に短縮します。

エンジン last-modified これはGitHubで何年もかけて開発され、 責任の木2012年以来、彼らは樹木レベルの「非難」を続けている。その後、 GitLabのエンジニア 彼らはパッチセットをGit 2.52に統合するために磨きをかけましたが、まだ追加すべき機能があります。 結果をキャッシュするためのディスクフォーマット 以前の処刑から。

実験的なものも到着 git repoリポジトリ機能のコンサルティングのための包括的なツール。 git repo info それがそうかどうかわかりますか o 浅い、オブジェクトと参照の形式、および git repo structure 印刷されている 構造統計 (コミット数、ツリー、ブロブ、ブランチ、タグなど)。さらに、 info 短縮オプションを組み込む -z そしてできる オブジェクト形式を報告する 中古。

低レベルの参考文献を扱う人にとって、 git refs 須磨 git refs list (別名 git for-each-ref)そして、 git refs exists (に似ています git show-ref --exists前例のない機能を提供しているわけではないが、 頻繁な業務を集中させる 単一のコマンドで参照を実行します。

小さくても便利:今 git cmd --help-all それはまた機能する リポジトリ外これにより、何も初期化する必要なく、グローバル ヘルプに簡単にアクセスできるようになります。

メンテナンスとパフォーマンス

Git 2.52ではタスクが導入されました geometric 中で git maintenance 可能な限りオールインワンの再パックを避け、到達不可能なオブジェクトのプルーニング頻度を低くします。タスクはパッケージを検査して、 物体の数による等比数列 適切な場合には剪定せずに圧縮する。操作が単一のパックで終了する場合は、 git gc 統合と整理が完了しました。

速度に関しては、目に見える進歩が見られます。 git describe 現在は優先キューを使用しており、 30%のパフォーマンス; git remote rename 参照の名前変更を最適化します。 git ls-files より多くのケースでインデックスが分散された状態を維持します。 git log -L マージ時にツリーレベルの差分を回避し、分析を高速化します。また、ライブラリ xdiff いくつかの最適化が組み込まれており、 差分とマージが改善されました ファイルレベルで。

Git 3.0 へのセキュリティとロードマップ

SHA-1からSHA-256への移行は継続中です。SHA-256の最初の要素はバージョン2.52で登場しました。 アルゴリズム間の相互運用性目標は、異なるハッシュを持つリポジトリ間で変更をシームレスに交換できるようにすることです。まだ基礎作業段階ですが、次のメジャーリリースへの道筋を示すものです。

Git 3.0で予定されているもう一つの変更は、デフォルトブランチの名前が「main」になることです。これはバージョン2.52から実装されています。 手がかりとヘルプメッセージ その変化を容易にするために、そして、先に進みたい人は誰でもフラグを付けてコンパイルできる。 WITH_BREAKING_CHANGES 計画された行動をテストするため。

また、オプションとして、Rustコードも含まれており、 WITH_RUST可変長整数のエンコード/デコードを実装しています。このバージョンでは必須ではなく、Git 2.52はRustコンパイラなしでも動作しますが、 Git 3.0ではこれが必要になると予想される 書き直した部分を拡張します。

ワークフローと使いやすさの改善

の使用 変更パスブルームフィルタルートで絞り込んだ際に移動速度を上げる確率フィルター。現在では、 パススペック 含まれています 部分的なワイルドカード (たとえば、 foo/bar/*/baz)および複数の関心経路があるシナリオでは、次のようなクエリが役立ちます。 last-modified およびいくつかの履歴コマンド。

git sparse-checkout アクションを追加する clean 関心領域の定義を変更した際にファイルが選択範囲から除外されるケースを解決します。1つの手順で、 作業ツリーをクリーンアップする 不要な要素の。

その他の便利な追加機能: 新しい変数 commitGraph.changedPaths デフォルトで有効にする --changed-paths en git commit-graph; オプション stash.index のために git stash pop/apply 次のように呼び出された場合と同じように動作します。 --index; git diff-tree 受け取る --max-depth; git fast-import署名されたラベルを管理する、そして、 git repo info レポートオブジェクト形式に加えて、サポートについて学習します -z.

Git 2.52 の可用性

Git 2.52のソースコードは以下からダウンロードできます。 公式サイト ローカルでコンパイルしてください。数日から数週間以内に届くはずです。 主要なディストリビューションのリポジトリ ヨーロッパの GNU/Linux (Debian、Ubuntu、Fedora、openSUSE、Arch など) には、Homebrew、MacPorts、Chocolatey などのマネージャがすでに存在し、通常のパッケージング時間もかかります。

このリリースにより、Gitは日々の業務を強化し、 より速く、より便利なコマンドより合理化されたメンテナンスルーチンと、SHA-256への移行に向けた最初の構成要素が、デフォルトブランチである「main」に導入されました。アップグレードした方は、今すぐテストできます。 git last-modified新しい git repo幾何学的な課題 git maintenance そして、音を立てずに、小さなリポジトリでも巨大なリポジトリでもエクスペリエンスをスムーズにするその他の調整。

GitLab Duoエージェント
関連記事
GitLab Duo エージェントプラットフォーム: AIエージェントによるDevSecOpsコラボレーションの新時代