11

非常に大きい (> 10gb) git リポジトリを使用しています。リポジトリ自体には多くの大きなバイナリ ファイルがあり、それぞれに多くのバージョンがあります ( > 100mb )。この理由は、この質問の範囲を超えています。

現在、サーバー自体がメモリ不足 (12 GB) になり、失敗コードを送信するため、リポジトリから適切にクローンを作成することはできなくなりました。ここに貼り付けますが、障害が発生するまでに 1 時間以上かかります。

クローンを成功させる方法はありますか? レポの部分的なコピーを取得するものでも? または、サーバーを詰まらせない一口サイズのチャンクでクローンを作成できる方法はありますか?

4

5 に答える 5

9

「大きくなりすぎた git リポジトリのクローンを作成するにはどうすればよいですか?」に対する 1 つの回答 は「大きなブロブを削除してサイズを縮小する」です。

(質問者がコメントで、レポ修正は「この質問の範囲を超えている」ことを明確にしていることを認めなければなりませんが、コメントには、「レポを今すぐ複製できるようにするための迅速な修正に取り組んでいます」とも書かれているため、私がこの回答を投稿しているのは、a) 彼らが BFG を認識していない可能性があり、レポのクリーニングの難しさを過大評価している可能性があるためです。b) 実際、非常に迅速です。

リポジトリを簡単かつ迅速にクリーンアップするには、 BFGを使用します。

$ java -jar bfg.jar  --strip-blobs-bigger-than 100M  my-repo.git

サイズが 100 MB を超える古いファイル (最新のコミットに含まれていないもの) は、Git リポジトリの履歴から削除されます。git gcその後、デッド データを消去するために使用できます。

$ git gc --prune=now --aggressive

これが完了すると、レポははるかに小さくなり、問題なく複製されるはずです。

完全な開示: 私は BFG Repo-Cleaner の作成者です。

于 2013-09-17T18:52:25.053 に答える
6

rsyncを含む最上位ディレクトリを指すことで、リポジトリ全体をコピーするために使用します.git。次に、.git/config のリモートを変更して、元のリモートを指すようにします。

で変更する必要がある私の頭の上の唯一のキー.git/configですが、ホスト固有の他のキーを探してスキャンします。それらのほとんどは、一目瞭然です。

于 2013-09-17T13:28:47.007 に答える
1

サーバーへの物理アクセスまたはシェル アクセスがある場合は、外部ハード ドライブまたは FTP を介してリポジトリを手動で転送できます。リポジトリが裸の場合は、How Do I Convert a Bare Git Repository Into a Normal One in Place を参照してください。

于 2013-09-17T13:29:35.840 に答える
1

サービング リポジトリでパック作成パラメータを再設定してみてください。特に、git の ~no limit~ デフォルトの pack.windowmemory.

私はから始めます

git config pack.windowmemory 1g

デフォルトではコアごとにそれだけの量を使用するためです。

于 2013-09-17T20:19:56.797 に答える