Subversion で直前のコミットを取り消し,なおかつ Trac も同期する方法

  勢い余ってコミットしたはいいけど,恥ずかしい間違いがあってコミットをなかったことにしたい場合の対処方法です.

対象のリポジトリ /svn/foo  
現在のリビジョン 100       
直前のリビジョン 99        
対象の Trac 環境 /trac/foo

1. 取り消したいリポジトリをディレクトリごとバックアップする

 $ mv /svn/foo /svn/foo.bak

2. 同名のリポジトリを作成する

 $ svnadmin create /svn/foo

3. バックアップしたリポジトリから直前までのリビジョンをダンプして,新しく作ったリポジトリにロードする

 $ svnadmin dump -r 0:99 /svn/foo.bak | svnadmin load /svn/foo

  これで,リビジョン 99 までのリポジトリが完成します.

4. Trac と同期する

$ trac-admin /trac/foo resync

  以上,はてブしておいた記事がそのまま役に立ちました.ふー.

- YappoLogs: 悪のりで学ぶsvnadmin/trac入門実用編
  http://blog.yappo.jp/yappo/archives/000477.html

- ref.: svnadmin dump
  http://subversion.bluegate.org/doc/re33.html

- ref.: svnadmin load
  http://subversion.bluegate.org/doc/re38.html