概要
私は、他の場所から供給された多くの構成のアーカイブとして機能する Git リポジトリを持っています。
- 200ディレクトリ
- ディレクトリあたり 100 ファイル
- ファイルごとに 10K のプレーン テキスト
- 1 日あたり最大 1000 件のコミット、通常は 10 行未満の編集
- 1支店
- 1 人のユーザーがすべてのコミットを処理します
- 読み取り専用ベースの他のすべてのビューリポジトリ
誰かがこのレポを小さなレポに分割しようと提案する前に、それは顧客のためのオプションではありません。
レポには最大 2 年分のデータが含まれていますが、お客様は過去 90 日間しか必要としません。
プロセス
ここで説明する方法を使用して、90 日前にルートをコミットに正常に移植しました。
- git checkout -b newroot xyz_90_days_old_rev
- git リセット abc_original_root_rev
- git add .
- git commit --amend -m '履歴を消去'
- git チェックアウト マスター
- git rebase --onto newroot xyz_90_days_old_rev
問題は、後で git-filter-branch クリーンアップを使用することです。24 時間以上かかるため、ユーザーにとって許容できないダウンタイムです。
代わりに bfg-repo-cleaner を試してみたいのですが、よくわかりません:
- このユースケースをサポートしていますか?
- 裸でないレポで動作しますか?
PSgit checkout --orphan
:もう少しエレガントだったことに気づきましたBFG
が、レポがむき出しであるcheckout
必要があるのに、むき出しではない必要があるという問題は実際には変わりません