ここでは、SVN プロジェクトのディレクトリが /data/svn/project であると仮定し、trunk/test.exe ファイルと、trunk/notallowed/ ディレクトリを除外したいとします。手順は次のとおりで、実行される svn コマンド ( svn インストール ディレクトリの bin ディレクトリ内) は次のとおりです。
# まず svn ライブラリ全体をエクスポートします
svnadmin ダンプ /data/svn/project > project_original.dump
# 次に、project_original.dump ファイル内の不要なファイルを除外し、新しいダンプ ファイルを生成します
タイプ project_original.dump | svndumpfilter 除外 トランク/test.exe トランク/notallowed > project_new.dump
# 次に新しい svn プロジェクトを作成し、上記のダンプ ファイルを新しいプロジェクトにインポートします
svnadmin 作成 /data/svn/project_new
svnadmin ロード /data/svn/project_new < project_new.dump
最後に、元のプロジェクト ディレクトリを削除し、project_new を project に変更します。 dump コマンドは svn プロジェクト内のすべての変更と履歴レコードをエクスポートするため、エクスポートされたダンプ ファイルのサイズが大きくなり、インポート時間が比較的長くなることに注意してください。
SVN リポジトリ内の一部のフォルダーまたはファイルをサーバー側から完全に削除します
SVN リポジトリ内のフォルダーまたはファイルを完全に削除したい場合は、次の方法を使用できます (たとえば)。
例: SVN ライブラリのパスが E:/svn/project で、ライブラリ内のディレクトリ構造が次であると仮定します。
QA/トランク
ソフトウェア/タグ/test.exe
Software/Tags/ ディレクトリ内の test.exe ファイルを削除します。
手順は次のとおりです。
SVN ライブラリをダンプし、svndumpfilter を使用して削除するファイルを除外します。新しい SVN ライブラリを作成し、処理されたファイルを新しい SVN ライブラリにロードします。
>svnadmin ダンプ E:/svn/project > aaa.dump
>タイプ aaa.dump | svndumpfilter 除外 /Software/Tags/test.exe > bbb.dump
>svnadmin 作成 E:/svn/project_new
>svnadmin ロード E:/svn/project_new < bbb.dump
次に、新しい project_new の名前を project に変更します。以前のプロジェクトを移動するか、別の名前を付けることができます (TRAC で使用される SVN ディレクトリはプロジェクトであるため、ユーザーが使用する SVN ディレクトリもプロジェクトになります)。
この方法では、SVN リポジトリにバージョンがあまりない場合に、SVN リポジトリ内の特定のフォルダまたはファイルを完全に削除する効果が得られますが、SVN リポジトリにバージョンが多すぎると、ダンプ時にストレージ容量が不足します。バージョンはダンプできません。操作不能になります。このとき、記憶容量を満たす別のハードディスクを取り付ける必要があります。
SVN を使用して削除されたファイルまたはフォルダーを復元する方法
TortoiseSVN の使用:
1. ローカルの作業コピーで、TortoiseSVN -> ログの表示を使用してリポジトリの履歴を表示します。検索を使用できます。
2. ファイルまたはフォルダーが削除されたバージョンを見つけて、ログ メッセージ内の [このリビジョンからの変更を元に戻す] を右クリックします。
3. ファイルまたはフォルダーがローカルの作業コピーに復元されます。誤って削除した場合は、リポジトリにコミットしてください。
Eclipse 用の Subclipse プラグインの使用:
1. [チーム] -> [SVN リポジトリ履歴の表示] を使用して、リポジトリの履歴を表示します。
2. ファイルまたはフォルダーが削除されたバージョンを見つけて、右クリックして [XX バージョンに戻す] を選択します。
3. ファイルまたはフォルダーがローカルの作業コピーに復元されます。誤って削除した場合は、リポジトリにコミットしてください。