BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース マイクロソフト、Azure DevOpsでGit Partial Cloneのサポートを発表

マイクロソフト、Azure DevOpsでGit Partial Cloneのサポートを発表

原文リンク(2023-12-11)

Azure DevOpsは先日、Git Partial Cloneのサポートを全ユーザーに拡大した。Partial Cloneは、特定のコマンドライン引数によって開始されるgit cloneの合理化バージョンである。Partial Cloneを採用したリポジトリでは、clone作成時間が平均88.6%短縮されたことが実証された。また、従来のcloneに比べてパフォーマンスが向上し、特に大規模なリポジトリに恩恵をもたらす。

マイクロソフトの主席ソフトウェア・エンジニアであるMichael Carlson氏は、Partial Cloneを使用したパイプラインの構築におけるスピードの潜在的な利点を強調し、ブログ投稿で詳細を述べた。従来のcloneとは異なり、Partial Cloneは、最初のclone時にリポジトリ内のすべての履歴オブジェクトを取得するわけではない。その代わり、ブランチのチェックアウト時やその他のgitシナリオで必要になるまで、多数のオブジェクトのダウンロードを延期する。

Partial Clone機能の設計は、大規模なリポジトリを管理するGitの機能強化を目的としている。非常に大規模なリポジトリの場合、clone作成プロセスは数時間(あるいは数日)に及ぶこともあり、100ギガバイト以上のディスク容量を占有する可能性がある。このようなリポジトリには、ユーザーにとって不必要なBLOBやツリーが多数含まれていることが多い。ツリー内のユーザー指定の作業領域を超えてファイルが存在したり、大容量ファイル形式で実質的なバイナリアセットが存在することもある。

Partial Cloneでは、cloneやフェッチ操作の際に不要なオブジェクトのプリエンプティブダウンロードを回避し、ダウンロード時間の短縮とディスク使用量の削減を実現する。その結果、ダウンロード時間が短縮され、ディスク使用量が削減される。その後、必要なときに不足するオブジェクトをオンデマンドでフェッチできる。これらの欠落オブジェクトを供給できるリモートは、要求に応じてオブジェクトを提供することから、promisor remoteと呼ばれる。

Git Partial Cloneは、これらの引数を含むGit clone/フェッチにのみ影響する。

Blobless clones:git clone --filter=blob:none <url>

Treeless clones:git clone --filter=tree:0 <url>

Carlson氏は、Partial Clone機能がAzure DevOpsのShallow Clone機能に似ていると指摘している。

git clone --depth=1 <url>

しかし、Shallow Cloneは通常、過去のコンテキストを必要としないビルドパイプラインのような特定のシナリオで使用される。この場合、gitのコミット履歴は平坦化され、以前の履歴を意識することなく、ある時点までのコミットのみが表示される。

この発表に対して、技術コミュニティはブログ投稿のコメント欄やRedditで反応した。参加者の一人であるEmil Eriksson氏は、Git Partial CloneとAzure DevOps Server 2022との互換性や、アップグレードの必要性について質問した。Carlson氏は、この機能はAzure DevOps Serverの将来のリリースで利用可能になると回答した。Redditの投稿で、標準のチェックアウトタスクにtreeless / blobless clonesを含めるという機能リクエストがあった。マイクロソフトのスタッフはこの要望を聞き入れ、機能の追加を検討すると述べた。

作者について

この記事に星をつける

おすすめ度
スタイル

特集コンテンツ一覧

BT