問題タブ [bfg-repo-cleaner]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
git-rewrite-history - BFG リポジトリ クリーナーは、ファイルに対して任意の操作を実行できますか?
MacOS の imageoptim-cli などのツールを使用してイメージを git history から圧縮し、レポ サイズを縮小したいと考えています。BFG は、さらに任意のコマンドの実行をサポートできますか? 私git filter-branch
は次のように見えました: https://gist.github.com/zbeekman/7482ccd0e87f495387951bd612dc390e
git filter-branch --prune-empty --tree-filter 'pwd ; ls -a ; imageoptim -a -q --verbose -d <path/to/img/dir/here> || true' -- --all
しかし、これは、それらが導入された後でも、すべてのコミットでそれらのファイルに対してイメージ ツールを実行しました。
git - 非ベアリポジトリでの Git リベース後に bfg-repo-cleaner を使用するには?
概要
私は、他の場所から供給された多くの構成のアーカイブとして機能する 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
必要があるのに、むき出しではない必要があるという問題は実際には変わりません