回答:
Hubertが言うようsvnadmin pack
に、ディレクトリ内のすべての個々のrepoファイルを1つの大きなファイルにパックします。これはあなたにいくらかのスペースを節約します、しかしそれはあなたのために計算の日を延期するだけです。(ただし、履歴の操作が速くなるはずなので、とにかく良い提案です)。注意すべき点の1つは、シャーディングされたディレクトリでのみ機能し(つまり、新しいディレクトリ構造は、1000のリビジョンを1つのディレクトリに入れ、次に新しいディレクトリを開始することです)、現在のリビジョンのディレクトリではなく、古いシャードディレクトリのみをパックします。初期化。
したがって、あなたの唯一の選択肢は、履歴から古いリビジョンを削除することです。これにはsvnadminのダンプとロードが必要で、オプションで、不要になったリポジトリ内のディレクトリを削除するためのフィルターが必要です。(例えば、古い一時的なブランチ)。
ダンプするのは簡単です。svnadmin dump -r xxx:HEAD
ここで、xxxは保持する最も古いリビジョンです(つまり、これは最新のものをダンプするため、アーカイブのように古いリビジョンは破棄されます)。また、それらをダンプすることにより、古いリビジョンのアーカイブを保持できます(svnadmin dump -r 1:xxx
)
ダンプファイルを取得したら、それをロードするのは、ダンプファイル名を渡してsvnadmin loadを実行するのと同じくらい簡単です。新しいリポジトリをロードする前に古いリポジトリを削除することをお勧めします。まだ持っていない場合は、最新のサーバーファイルシステムプロパティを利用できます。
すべての古いリビジョンを保持したいが、特定のディレクトリを除外したい場合は、指定されたパスを削除するsvndumpfilterを介してダンプファイルを実行する必要があります。--incrementalオプションを使用せずにダンプしたいことに注意してください。
明らかに、すべての操作をローカルでテストします-ローカルファイルにダンプし、それをローカルドライブの一時リポジトリにロードし(それも高速になります)、履歴と最新バージョンが機能することをテストします-最新リビジョンをディレクトリとwinmergeを使用して、ファイルがライブリポジトリからの最新リビジョンのエクスポートと同一であることを確認します。偏執狂になりたい場合は、歴史的な改訂版も試してください。
プロジェクトには、いつかsvnadmin obliterateコマンドを実装して、情報を完全に削除するタスクを実行する計画があります。
...
それまでの間、あなたの唯一の手段は、リポジトリをsvnadminダンプし、ダンプファイルをsvndumpfilter(不正なパスを除く)を通してsvnadmin loadコマンドにパイプすることです。
svnadmin dump; svndumpfilter; svnadmin load
ダンスを行わないと、SVNリポジトリからファイルを削除できません。あなたはできるあなただけの実行FSFS、使用している場合は、リポジトリのサイズを小さくsvnadmin pack
レポディレクトリ上を。