とある理由から、Subversionのリポジトリのリビジョン番号を進めたかったので調べてみた。
まず、以下の内容のファイルを skip.dump という名前で用意する。
SVN-fs-dump-format-version: 2
Revision-number: 1
Prop-content-length: 1
PROPS-END
で、それをこんな風にリポジトリに喰わせる:
$ svnadmin load /path/to/repos < skip.dump
<<< Started new transaction, based on original revision 1
------- Committed new rev 1000 (loaded from original rev 1) >>>
ログ見るとこんな感じで、空っぽのチェンジセットができる:
$ LANG=C svn log
------------------------------------------------------------------------
r100 | (no author) | 1970-01-01 09:00:00 +0900 (Thu, 01 Jan 1970) | 1 line
------------------------------------------------------------------------
たくさん進めたいときは bash でぐるぐる回せばいい。
$ for (( i=0; i<100; i++ )); do svnadmin load /path/to/repos < skip.dump; done
タイムスタンプはloadを実行した時刻になるので、必要であれば PROPS-END の前に以下のように書いておく*1:
K 8
svn:date
V 27
1970-01-01T00:00:00.000000Z
*1 ただし、リビジョンの時刻指定が発狂するので、昇順にしておくのが無難。
これ以前の時刻を指定したら、loadは成功したけどcheckout時にエラーが発生するようになってしまって困った。
いろいろやってみたら、結局、repos/db/revprops の該当リビジョン数のファイルを直接編集したところ、なんとか復活できた。こんなんでいいのか?