ソースコードとバイナリの両方を含むgit repoがあります。裸のレポは現在〜9GBに達しており、複製には年月がかかります。ほとんどの場合、「リモート:オブジェクトの圧縮」に費やされます。より大きなバイナリの新しいバージョンでコミットした後、フェッチに時間がかかり、オブジェクトをサーバ上で圧縮するのにも時間がかかります。大きなバイナリファイルのために遅くなっているgit repoの修正
git pull without remotely compressing objectsを読んだ後、私はバイナリファイルのデルタ圧縮が私たちにも悪影響を及ぼしていると思っていますが、これを修正する方法は100%わかりません。
サーバ上でベアレポを修正する正確な手順は何ですか?私の推測:
- は.gitに/情報/
- ファイル名を指定して実行「Gitの再梱包」を属性が、どのようなオプションを使用して、私がしたいすべての拡張のために「* .zipファイル - デルタ」のようなエントリを追加しますか? -adFはすべてを再パックし、指定されたファイルタイプに対してデルタ圧縮が行われていないレポを残しますか?
- 'git prune'を実行します。私はこれが自動的に行われたと思ったが、レポの裸のクローンで遊んだときにそれを実行すると、サイズが〜2GB減少した。
- リポジトリをクローンし、.gitで追加したのと同じエントリ/裸のレポの/ info/attributes
私は何かにはありますか?
アップデート:この上
いくつかの興味深いテスト結果。今日私は問題のあるレポの裸のクローンを始めました。それほど強力ではないサーバーには4GBのRAMがあり、メモリが不足していて交換が始まった。 3時間後に私はあきらめました...
私は代わりに私の最新の作業コピーから裸のレポをクローンしました。ワークステーション間のクローニングには5分かかりました。私はそれを新しいレポとしてサーバーにプッシュしました。クローニングはレポにわずか7分かかりました。
これを正しく解釈すると、バイナリファイルのデルタ圧縮を無効にしなくても、より優れた圧縮レポがさらに優れたパフォーマンスを発揮します。私はこれが上記のステップが実際に私が短期的にやりたいことであることを意味すると思いますが、さらに、サーバー上の圧縮/圧縮に使用できるメモリの量を制限する方法を見つける必要があります。交換。
重要な場合:サーバーはgit 1.7.0.4を実行し、ワークステーションは1.7.9.5を実行します。
アップデート2:
梱包とき、私は私のtestrepoで次の手順をした、と私は(バックアップ後)、サーバー上
制限メモリ使用量を、それらを行う機会になると思いますオブジェクト
gitの設定pack.windowMemory 100メートル
Gitの設定パック。エコー '* .tar.gzを - デルタ' >>情報/属性
エコー '* .tar.bz2と - デルタ' >>いくつかの拡張のためのpackSizeLimit 200メートル無効にデルタ圧縮情報/属性
エコー '* .binファイル - デルタ' >>情報/属性
エコー '* .PNG - デルタ' >>情報/ 0属性
詰め直すリポジトリ及びごみを収集
gitの再パック-a -d -F --windowメモリ100メートル--maxパックサイズ200メートル
GitのGC
アップデート3:
この操作後の予期しない副作用:Issues after trying to repack a git repo for improved performance
他の場所にバイナリを格納するオプションがありますか? Gitは大きなバイナリで本当にうんざりしていますが、それは認められています。そのため、[別の](http://caca.zoy.org/wiki/git-bigfiles)[製品](http://git-annex.branchable.com/)があります。 – eis
gitで始まったのは、gitリビジョンをチェックするだけで、過去の完全なスナップショットを取得できるように、uCバイナリ、つまりrootfsとtoolchainが追加されました。私たちは、不調を予知するのに十分なことを知らなかった。私はこれを正しく修正しようとしています(git-annexを見ていましたが、git-bigfilesについてはわかりませんでしたが)短期的な解決策として、現在のレポのパフォーマンスをできる限り向上させたいと思います。 – anr78
あなたのdev環境/ツールチェインを仮想マシンに保存する方が良いと思います(あなたのdev環境の異なるバージョンを保存する必要がある場合は、新しいディスクイメージをレポの外に保存するだけです)。 –