4

git リポジトリが突然非常に大きなサイズに膨れ上がるという問題が発生しています。

これがセットアップです。

約 900 MB のファイルと 1.8 g のオブジェクト ファイルを含む git マスター リポジトリがここにあります。

[gitmaster.local] du -hs 
2.7G    .
[gitmaster.local]$ cd .git/objects/
[gitmaster.local]$ du -hs
1.8G    .

このリポジトリをきれいに保つために、いくつかのメンテナンスを実行します。毎日、スクリプトで次の 2 つのコマンドを実行します。

GIT_PROG2="/usr/bin/git-reflog expire --expire=now --all"
GIT_PROG3="/usr/bin/git-gc"  

そして毎週私はこれらを実行します:

GIT_PROG2="/usr/bin/git-reflog expire --expire=now --all"
GIT_PROG3="/usr/bin/git-repack -a -d --depth=250 --window=250 -f " 

およそ 15 ~ 30 分ごとにこのサーバーからプルする、いくつかの異なる git クライアントがあります。彼らは、単純な「git pull」を使用して、cron ジョブを介してまったく同じものをプルしています。毎週、これらのリポジトリは次のことを行います。

GIT_PROG2="/usr/bin/git-reflog expire --expire=now --all"
GIT_PROG3="/usr/bin/git-gc"  

ただし、時折、そのうちの 1 つが制御不能になり、ディスク領域が .git/objects でいっぱいになり、領域の 99.9% がいっぱいになります。それがしているのは、単純な「git pull」だけです。

gitclient001
1.3G    .
gitclient002
1.3G    .
gitclient003
1.3G    .
gitclient004  <-- woops!
101.2G  .
gitclient005
1.3G    .
gitclient006
1.3G    .

これが起こったときの私の現在の解決策は、それを吹き飛ばし、深さ= 1で再クローンすることです。履歴データはあまり気にしないので。数日間の変更を心配するよりも、操作できる方がいいと思います。

明らかに、私はこれがスムーズに実行されることを望んでいます。この動作が発生する原因は何ですか? どこを見るべきかについての考えや提案はありますか?

ありがとう。

4

1 に答える 1

0

実行git fsckして、問題を説明できる何かが報告されるかどうかを確認してみましたか?

少しスクリプトを作成し、blobを渡して、git show <sha>1 |wc大きなものがあるかどうかを確認することもできます。

于 2012-12-03T11:53:28.097 に答える