Subversion リポジトリから特定のパスを完全に削除する方法

Share/Save

旧リポジトリをダンプするときにフィルタを通す。svndumpfilter の exclude コマンドで、除外ディレクトリを指定する。複数のディレクトリを指定する場合はスペースで区切る。--renumber-revs は、リビジョン番号に欠番をださずに詰めるオプション。

$ svnadmin dump /path/to/repository | svndumpfilter --renumber-revs exclude dir1 dir2/foo/bar dir2/foo/boo dir3/hahaha > repository.dump

新しいリポジトリを作成して、フィルタ済みの旧リポジトリをロードする。

$ svnadmin create /path/to/newrepository
$ svnadmin load /path/to/newrepository < repository.dump

指定したパスを除くだけで、過去の特定のリビジョンにおける特定のパスを除けるわけではない。コマンドとして指定できるのは include と exclude。過去にリポジトリ内でファイルを移動している場合は、svndumpfilter で取り除くのが難しい場合もある。

サブコマンド
 include
  残すパスを指定する。
 exclude
  取り除くパスを指定する。
 
オプション
 --drop-empty-revs
  空のリビジョンを作成しない。
 --renumber-revs
  空のリビジョンを詰める。
 --preserve-revprops
  空のリビジョンを残す場合に、ログメッセージなども残す。