2014年4月14日月曜日

svnadmin verifyでE720002: Can't open file

SVNサーバを移行したところ、
svnadmin verifyで「E720002: Can't open file 'XXXX\format'': 指定されたファイルが見つかりません。」
というメッセージが表示されるようになった。

 移行前のバックアップと比較すると、ORIGINALのファイルがバックアップ先にコピーされていないことが判明。ファイルが壊れているわけではなさそう。

 なので、新しい環境でhotcopyをコマンドラインから実行してみると、
svnadmin: E720002: Failed to create hotcopy at 'XXXX'. The file 'XXXX/db/fsfs.conf' is missing from the source repository. Please create this file, for instance by running 'svnadmin upgrade C:XXXX'
svnadmin: E720002: Can't open file 'C:\XXXX\db\fsfs.conf': 指定されたファイルが見つかりません。
とのこと。

SVNのバージョンの違いが原因っぽいので、以下のコマンドで確認。
> svnadmin --version
新環境は1.8.1 (r1503906)、旧環境は1.6.6 (r40053)…。
そんなに古かったのか…。

ちなみにWinMergeで過去にバックアップされているリポジトリとオリジナルを比較すると、違いがないことから、ファイルが壊れていることはなさそう。

念の為、originalのバックアップを更にローカルに作成し、以下を実行。
> svnadmin upgrade XXXX
Repository lock acquired.
Please wait; upgrading the repository may take some time...
Upgrade completed.
実行後、svnadmin hotcopyとverifyを実施したところ、エラーは発生せず。
念の為、作業コピーについては、全て削除し、チェックアウトし直す。

ちなみに、変更前と変更後のリポジトリの差をWinMergeで確認してみると、dbフォルダの以下のファイルが変更されているのみで、コミット対象自体のフォーマットは変わっていないことを確認。
db\format
db\fsfs.conf   <-新規作成
db\write-lock <-新規作成
以外とあっさり、移行完了。