1. ホーム
  2. ギット

[解決済み】「Auto packing the repository for optimum performance」とはどういう意味ですか?

2022-04-03 10:45:05

質問

私のgitレポに問題があります。ここ数日、サーバーにプッシュするたびに「"Auto packing the repository for optimum performance"」というメッセージが表示され、それが消えずにシェルを返しているようです。

また、新しいブランチにチェックアウトしてから、前のブランチでリベースを行い、次のようにしました。 git gc を使用して未使用の履歴オブジェクトを削除し、プッシュしましたが、まだこのメッセージが表示されます。私のレポに何が起こっているのか、教えてください。

どうすればいいですか?

短いバージョン:それは書いてある通りの意味であり、そのまま終わらせればすべてうまくいくでしょう。

リポジトリ内のルース(アンパック)オブジェクトの数を増やす可能性のあるほとんどの操作(プッシュを含む)の間、Gitは git gc --auto . 十分なルースオブジェクトがある場合(デフォルトでは少なくとも6700個)、その後に git repack -d -l を使用して、それらを梱包します。もし別々のパックが多すぎる場合は、1つにまとめ直します。

パックとは、多数のオブジェクトを含む、デルタ圧縮された単一ファイルのことです。オブジェクトをパックにまとめて保存するのが効率的ですが、オブジェクトをパックする(圧縮する)には時間がかかります。そこで、Gitは最初にルースオブジェクトを作成し、時々それらを一括してパックするために、自動的に git gc --auto .

Gitに再パックを完了させれば、しばらくはこの現象は起こりません。 特に大きなバイナリオブジェクトをたくさん持っている場合、確かに時間がかかることがありますが、もし発動しているのであれば、それはおそらくレポが取るディスクスペースを劇的に減らすことができるサインです。もし本当にそうなってほしくないのであれば、設定パラメータの gc.auto . この値を 6700 よりもずっと大きな値にすると、発生頻度は低くなりますが、発生したときに時間がかかります。この値を小さくしても、現在のリパックを行う必要はありますが、その後、より頻繁に発生し、より早く終了します。0に設定すると、自動再梱包が無効になります。

参照 man git-gc (以下 --auto ) と man git-config (以下 gc.auto をご覧ください。