「公開しちゃいけないコードを間違えてアップしちゃいました。なかったことにできませんか」という連絡が来た。つまりsubversionのリポジトリから特定のコミットを削除しろ、ということか。
IRCで質問したところ、以下のFAQを紹介された。
http://subversion.tigris.org/faq.html#removal
svnadmin dumpで取り除きたいコミットを削除してやればいいみたい。
つまり、r1000をなかったことにしたい場合は
svnadmin dump $REPOS --revision 0:999 > dumpfile0 svnadmin dump $REPOS --revision 1001:HEAD --incremental > dumpfile1 svn create $NEWREPOS svnadmin load $NEWREPOS < dumpfile0 svnadmin load $NEWREPOS < dumpfile1
なんてしてやれば良いと。
手順
1. httpサーバ停止
/etc/init.d/http stop
2. subversion, tracのバックアップ
svnadmin dump $REPOS > dumpfile trac-admin $TRAC hotcopy > trac-backup
svnadmin dump $REPOS --revision 0:999 > dumpfile0 svnadmin dump $REPOS --revision 1001:HEAD --incremental > dumpfile1 svn create $NEWREPOS svnadmin load $NEWREPOS < dumpfile0 svnadmin load $NEWREPOS < dumpfile1
mv $REPOS OLD/ mv $NEWREPOS $REPOS
5. tracのデータベース同期
trac-admin $TRAC resync
6. httpサーバ再起動、動作確認