2009-01-05 [長年日記]

Subversionリポジトリのリビジョン番号を進める方法

とある理由から、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 の該当リビジョン数のファイルを直接編集したところ、なんとか復活できた。こんなんでいいのか?


«前の日記(2009-01-01) 最新 次の日記(2009-01-06)»