2013-04-22 17 views
5

git filter-branch --tree-filterを使用してかなり大きなレポの履歴を書き直していますが、数時間かかることがあります。私はgitが一時的なディレクトリを使ってその中間作業を保管しているのを見ています。中断した場合にリライトを再開することは可能ですか?もしそうなら、どうですか?git履歴の書き換えを再開するにはどうしたらいいですか?

編集

私がやっている操作は、ディレクトリのカップルを移動しています。これらは現在サブディレクトリにありますが、今はそれらをルートにする必要があります。

dir1 
- dir2 
- dir3 
- dir4 

私のディレクトリ構造はより多くの、より複雑ですが、それは私が何をしようとしているの要旨だ。もちろん、

dir1 
- dir2 
dir3 
dir4 

になります。

+0

好奇心から(あなたの質問には本当にコア)、あなたはあなたが何をやっている動作を記述することができます。 - ツリーフィルタ?ファイルの削除または変更? –

答えて

13

git filter-branchは一時的なデータを.git-rewriteフォルダに書き出しますが、このディレクトリの内容に基づいて再開することは実際にはサポートされていません。以前に中止したfilter-branch操作を実行していたリポジトリでgit filter-branchを実行すると、その一時フォルダまたは--forceオプションを使用して、do it itselfを削除するかどうかを尋ねるメッセージが表示されます。

根本的な問題は、大きなリポジトリではgit-filter-branchが遅く実行されていることです。プロセスがはるかに高速だった場合、再開を試みる意欲はありません。だから、あなたはいくつかのオプションを持っている:

メイクのgit-フィルタ分岐は少し速く行く...

  • RAM-disk使用 - git-filter-branchは非常にIO集約型で、リポジトリで高速に実行されますRAMに座っている。
  • 使用--index-filterいうより--tree-filter - それは木のフィルタに似ていますが、より高速になり、ファイルツリーを、チェックアウトしませんが、はgitのインデックスコマンドの面であなたのファイルの変更を書き換えることができ必要がありません。
  • 使用cloud computingと高速RAMと高いクロックスピードでマシンを雇う(git-filter-branch自体はシングルスレッドであるとして、独自のコマンドは、マルチスレッドでない限り、複数のコアを気にしないでください)

...それは50-150x高速です大きなリポジトリ上 - .OR BFG (道より高速)を使用

BFG Repo-Cleanerは、単純git-filter-branchに速い代替手段です。それはあなたの仕事を1時間に数時間かかります。はほんの数分です。

全開示:私はBFG Repo-Cleanerの著者です。

+0

Linux VMでのRAMディスクでの実行は大幅に高速化していますが、私はBFG Repo-Cleanerを使用することができませんでした。ディレクトリのいくつかはサブディレクトリではなくルートディレクトリにあります。私が知る限り、 '--index-filter'はインデックスだけでは動作しないので、' git mv'はあまりにも扱いにくいものになります。 – alnorth29

+0

Veryちなみに、ディレクトリの移動/削除は、私がBFGに追加しようとしている機能です - それが完了したらコメントを追加します。使用例 –

+0

@ alnorth29謝罪、さらなる質問 - サブディレクトリ移動のための_調整は何でしたか?なぜそれは必要でしたか? –

6

Robertoが答えてくれましたが、ベンチマークを行いたいと思います。git filter-branchの処理が完了するまでに時間がかかる場合は、AWSの高メモリインスタンスを検討してください。

私はかつてfilter-branchを持っていて35の異なるリポジトリを1つにまとめていました。それらのリポジトリは、それぞれ2年間の1日あたりコミットの数十年の歴史を持ちます。私のスクリプトはラップトップで25時間で完了できませんでした。これはAmazonでm2.4xlargeのインスタンスで45分で完了しました。

合計費用は?

- 私は20ozソーダに費やしています。

BFGは素晴らしいツールのように聞こえますが、私は定期的に履歴を書き換えてみてください。しかし、作業してAWSに簡単にアクセスできるだけのものがあれば、filter-branchは非常に簡単です。

これはさらに安価です。ただSpot Advisorの上にmoseyと自分で$ 0.30 /時間のさまざまな「クラスタ計算の何かを見つける

関連する問題