SVNリポジトリの空き容量を増やす


8

最大リポジトリサイズのフリーミアムサイトでホストされているSVNリポジトリがあります。この容量に近づくと、チェックインしたファイルに気づき、ディスク領域を解放するために完全に削除できることを知っています。ファイルを削除できるだけでなく、その履歴もSVNに通知するにはどうすればよいですか?

回答:


7

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を使用して、ファイルがライブリポジトリからの最新リビジョンのエクスポートと同一であることを確認します。偏執狂になりたい場合は、歴史的な改訂版も試してください。


3

Subversion FAQから:

プロジェクトには、いつかsvnadmin obliterateコマンドを実装して、情報を完全に削除するタスクを実行する計画があります。

...

それまでの間、あなたの唯一の手段は、リポジトリをsvnadminダンプし、ダンプファイルをsvndumpfilter(不正なパスを除く)を通してsvnadmin loadコマンドにパイプすることです。


2

svnadmin dump; svndumpfilter; svnadmin loadダンスを行わないと、SVNリポジトリからファイルを削除できません。あなたはできるあなただけの実行FSFS、使用している場合は、リポジトリのサイズを小さくsvnadmin packレポディレクトリ上を。


0

一般に、バージョン管理下のリポジトリからファイルを削除することはお勧めできません。

私はそれが正しいかどうかわかりませんが、これは私がそれを理解する方法です。バージョン管理は、固有のチェックサムに関するものです。何かを削除すると、これらのチェックサムが再利用されるリスクがあり、競合が発生します。この方法でディスク容量不足の問題を軽減し、データプランをより適切にアップグレードすることは、単に価値がありません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.