次の方法で共有


Git の制限

Azure DevOps サービス

Azure Reposの Git リポジトリにリソース制限を課し、すべてのお客様の信頼性と可用性を確保します。 データ サイズとプッシュ数を妥当に保つことで、Git の全体的なエクスペリエンスの向上が期待できます。

Git は、他の Azure DevOps Services と共に レート制限 に参加します。 さらに、リポジトリ、プッシュの合計サイズ、およびファイルとディレクトリのパスの長さに制限を課しています。

リポジトリのサイズ

リポジトリは 250 GB 以下にする必要があります。 リポジトリのサイズを取得するには、コマンド プロンプトで git count-objects -vH を実行し、"size-pack" というエントリを探します。

D:\my-repo>git count-objects -vH

count: 482
size: 551.67 KiB
in-pack: 100365
packs: 25
size-pack: 642.76 MiB   <-- size of repository
prune-packable: 83
garbage: 0
size-garbage: 0 bytes

最適なパフォーマンスを得るために、リポジトリを 10 GB 未満に保つことをお勧めします。 リポジトリがこのサイズを超える場合は、 Git-LFSScalar、または Azure Artifacts を使用して開発成果物を管理することを検討してください。

Azure Reposは、同様のファイルをパックに統合することで、全体的なサイズを継続的に縮小し、Git リポジトリの効率を向上させます。 リポジトリが 250 GB に近い場合、最適化プロセスが完了するまでにパック ファイルの内部制限に達する可能性があります。 この制限に達すると、リポジトリに書き込もうとすると、「Git パック ファイルの制限に達しました。リポジトリの更新中は、書き込み操作を一時的に利用できません」というエラー メッセージが表示されます。書き込み操作は、最適化ジョブが完了した直後に復元されます。

ファイルは 100 MB 以下にする必要があります。 この制限により、Git リポジトリの最適なパフォーマンスと信頼性を確保できます。 大きなファイルを使用すると、クローニング、フェッチ、変更のプッシュなどのリポジトリ操作が大幅に遅くなる可能性があります。 大きなファイルを保存する必要がある場合は、大きなファイルをメインリポジトリの外部に保存し、リポジトリ内での参照のみを保持することで、大きなファイルを効率的に処理するように設計された Git LFS(Large File Storage)の使用を検討してください。 このアプローチは、Git リポジトリのパフォーマンスと管理容易性を維持するのに役立ちます。

プッシュサイズ

大規模なプッシュは大量のリソースを消費し、サービスの他の部分をブロックまたは速度低下させます。 これらのプッシュは、多くの場合、一般的なソフトウェア開発アクティビティと一致しず、ビルド出力や VM イメージなどの項目が含まれる場合があります。 したがって、プッシュは一度に 5 GB に制限されます。

大規模なプッシュが通常の例外が 1 つあります: リポジトリを別のサービスからAzure Reposに移行することです。 このような移行は 1 回のプッシュとして行われ、大規模なリポジトリであってもインポートをブロックするつもりはありません。 リポジトリが 5 GB を超える場合は、コマンドラインではなく Web を使用して リポジトリをインポートする 必要があります。

LFS オブジェクトのプッシュサイズ

Git LFS は、5 GB のリポジトリ制限にはカウントされません。 5 GB の制限は、実際のリポジトリ内のファイルにのみ適用され、LFS で保存された BLOB には適用されません。 5 GB の制限によりプッシュが失敗した場合は、 .gitattributes ファイルに LFS で追跡するファイルの拡張子が含まれていることを確認してください。 追跡する大きなファイルをステージングする前に、このファイルが保存され、ステージングされていることを確認してください。

パス名の長さ

Azure Reposは、過度に長いパスを導入するプッシュを拒否することで、Git リポジトリ内のパスの長さを制限するプッシュ ポリシーを適用します。 [最大パス長] ポリシーとは異なり、プラットフォームでサポートされている最大値が適用されるため、無効にしたり上書きしたりすることはできません。

次の制限が適用されます。

  • パスの合計長: 32,766 文字
  • パス コンポーネントの長さ (フォルダーまたはファイル名): 4,096 文字

このポリシーは、プッシュで新しく導入されたパスにのみ影響します。 既存のファイルを変更する場合は適用されませんが、新しいファイルを作成したり、既存のファイルの名前を変更したり、移動したりすると適用されます。

プッシュされるコミットにこれらの制限を超えるパスが導入されている場合、プッシュは拒否され、次のいずれかのエラーメッセージが表示されます。

  • VS403729: The push was rejected because commit '6fbe8dc700fdb33ef512e2b9e35436faf555de76' contains a path, which exceeds the maximum length of 32766 characters.
  • VS403729: The push was rejected because commit 'd23277abfe2d8dcbb88456da880de631994dabb4' contains a path component, which exceeds the maximum length of 4096 characters.