6

誰かが私たちのバザー トランクにすべてのバイナリをコミットしました。私はそれを取り除きたいと思っています。`bzr del file' は現在のリビジョンからファイルを削除するだけで、ファイルの履歴は削除しません。

何百 MB ものデータをダウンロードする必要がないように、ファイル履歴を削除する方法はありますか?

4

3 に答える 3

6

2つの方法があります。ただし、ブランチ履歴の一部 (または完全) を再作成する準備ができている必要があります。そのため、ファイルを削除した後、現在の (ローカル) ブランチは新しいブランチと互換性がなくなります。

1) 手動の方法。大きなファイルが追加される直前に、ブランチからリビジョンへのコピーを作成できます。次に、さらにリビジョンを半手動で再コミットし、大きなファイルを除外する必要があります。replaybzr-rewrite プラグイン (以前の bzr-rebase) のコマンドを使用して、大きなファイルへの変更が存在しないリビジョンを再生します。merge -cN大きなファイルへの変更が存在するリビジョンに使用し、これらのファイルを手動で削除してコミットします。したがって、ほとんどの履歴をそのまま保持し、ブランチの他のファイルの一意のファイル ID を保持できます。

2)bzr-fastimportプラグインを使用して、履歴をコマンドで高速インポート ストリームとしてエクスポートしますbzr fast-export。次に、コマンドで大きなファイルを除外しますbzr fast-import-filter -x FILE。そして最後に、コマンドを使用して大きなファイルなしで新しいブランチを再作成しますbzr fast-import。このメソッドはすべての履歴を破棄し、すべてのファイルが新しいファイル ID を取得するため、新しいブランチは古いブランチと完全に互換性がなくなります。

いずれにせよ、内部に大きなファイルの履歴を含む共有リポジトリがある場合は、新しい空の共有リポジトリを作成し、新しいフィルター処理されたブランチをそこに配置する必要があります。

于 2010-02-15T13:02:40.957 に答える
3

最後のコミットでバイナリ ファイルが追加された場合は、コミットを解除できます。

bzr uncommit

これにより、作業ツリーは「bzr commit」を書き込む直前の状態のままになります。次に、ファイルを削除して再コミットします。

詳細については、間違いの取り消しに関するバザーのドキュメントを確認してください。

-r オプションを使用すると、1 回の操作で複数のコミットを元に戻すことができます。bzr uncommit -r -4

リビジョン履歴を気にしない場合のその他のオプション:
ブランチ ( ) をエクスポートしてからbzr export DESTINATION、新しいトランクを作成できます。
export コマンドは、履歴なしで単に head リポジトリをエクスポートします。

于 2010-02-15T12:40:13.533 に答える