
とある平和なある週末に事件は起こった
xx:14 ([aopy]+) stfuawsc汚染なコードをciってまった
xx:14 (A) ちょという事で、直近のコミットした内容をこの世から抹消しなければならなくなった。
xx:14 (B) ww
xx:14 (C) www
xx:14 (D) stfuawsc
xx:14 {[ainOS]+} パネラーディスカッション
$ svnadmin dump /svn/public > /tmp/public.dumpして該当データを探してみた
Revision-number: 100最後のほうに、該当するデータっぽいのを発見出来た、Revision-numberも100と書いてあるので、当たりっぽい。
Prop-content-length: 112
Content-length: 112ここからデータ
って事で、このRevision-number: 100の行からファイル末尾まで削除して
$ cat /tmp/public.dump | svnadmin load /svn/public.newした。
$ mv /svn/public /svn/public.old
$ mv /svn/public.new /svn/public
Reference to non-existent revision 100 in filesystem '/svn/public/db'と言われたお><
$ svn up -r 99したら、エラーが出なくなった。
これでsvnの証拠隠滅は完了した。
tracはsqliteつかってるので
$ sqlite3 /trac/public/dbしてsqlを使える状態にして、あれこれ調べた。
sqlite> delete from revision where rev = 100;と打った、しかしtracがまだ怒ってる!
sqlite> delete from node_change where rev=100;これでどうだ!
見事、問題のコミットは帳消しに出来ましたとさ。
めでたBoofyめでたBoofy
追記:
svnのいらないリビジョンはsvnadmin dump -r 0:99 | svnadmin load とかで消せて。
trac-admin
みなさま突っ込みありがとうございます。
Posted by Yappo at 2006年11月15日 23:32 | TrackBack | techはじめまして。
svnadmin dump -r 0:99 | svnadmin load ...
といった具合に、dumpのときに必要なリビジョンまでを指定する手もありますよ
トラバがなぜかできないみたいなので、コメントで。
tracの方は
trac-admin resync
このコマンドで、問題なく同期してくれると思いますよ。