越境で帯域が不安定なとき、git fetch単体は切断や不整合に弱いです。bundle と shallow/partial併用条件表とマトリクスに落とし、verifyキャッシュ鍵コマンド例で示します。Submodule 記事一覧ホームへ。

運用で滑りやすい三点

1

bundle 破損verify 前に失敗すると巻き戻しが困難です。

2

shallowdepth 不足マージベース欠落が起きやすいです。

3

鍵がブランチ名のみだとalternates 再利用古いオブジェクトが残ります。

越境シナリオと不安定帯域でのオブジェクト転送

リモート Mac から越境 HTTPS巨大 packを引くと切断が起きやすく、bundle スライスに分けverifyへ載せ替えると再試行単位が明確になります。

転送方式の比較(越境前提)

方式長所短所向くケース
fetch単純巨大 pack に弱い安定回線
shallow軽い履歴不足単一ブランチ
partialblob 遅延追加 fetchモノレポ
bundle検証しやすい運用増越境切断多

Git bundle のスライス戦略と帯域抑制

コミット幅で区切りverifySHA256成果物へ載せます。

git bundle create ci-slice.bundle main~200..main
git bundle verify ci-slice.bundle
git clone --depth=64 /path/to/ci-slice.bundle work

オブジェクトストアの再利用と alternates

alternates共有オブジェクトを指すと再転送を抑えます。GIT_ALTERNATE_OBJECT_DIRECTORIES短命 exportに留めます。

git clone --reference-if-able /var/lib/git-mirror/myproject.git --dissociate --depth=64 --single-branch https://example.com/org/myproject.git work

決定マトリクス(bundle×shallow の組み合わせ)

条件推奨パターン補足
単一ブランチshallowdepth はスクリプト要件で決定
切断多発bundle+verify境界はタグ固定が安全
巨大ツリーpartial と bundle 分離失敗時は浅い層へ
多並列alternates更新は直列ジョブ

検証付きパイプライン(五ステップ)

1

基準コミットからbundle 境界depth同一変数で生成します。

2

http.postBufferlowSpeed越境向けに上げます。

3

fetch --prune枯れ参照を落とします。

4

verify後にfsck --connectivity-only軽量で回します。

5

ミラー更新直列キャッシュ鍵ハッシュと depthを載せます。

git -c http.postBuffer=524288000 -c http.lowSpeedLimit=1000 -c http.lowSpeedTime=300 fetch --depth=256 --update-shallow origin main

失敗リトライと CI キャッシュ鍵の設計

四から九十秒退避同一スライス連打を避け、bundle の SHA256depthブランチ指紋ミラー世代分離記録します。プール IDプレフィックスへ載せ誤共有を防ぎます。

まとめ

bundle と verifyゲートに据え、shallow/partial要件に応じて深掘りします。alternates更新直列化が前提です。

引用できる値
  • 退避秒四から九十秒階段最大五回の再試行
  • http.postBuffer524288000 バイト五百メガバイト相当)を上限例として設定可能
  • shallow 例depth 二百五十六single-branchの併用

技術ブログ一覧料金購入ヘルプホームはログイン不要です。ノード選定料金からどうぞ。

Git bundle × shallow

越境 CI 向けに Mac ノードと帯域設計を選ぶ

料金・購入・ヘルプ・ホーム・技術ブログ一覧はログイン不要。SSH 接続後に上記パイプラインを載せられます。