CVSからSubversionへの移管

やっぱりどうにもCVSリファクタリングとの相性の悪さに耐え兼ねるということで、Subversionに移管することになった。

目標

正攻法

問題

  • ブラウザからアクセスすると500でメッセージは次のとおり。
    Could not open the requested SVN filesystem
  • cvs2svn.pyを実行した直後の状態では、リポジトリが壊れている。
    Error string not specified yet: Berkeley DB error while opening environment for filesystem /path/to/repository/db:\nDB_RUNRECOVERY: Fatal error, run database recovery
    と言われてしまった。
    • svnadmin recoverした。
  • 今度はこんなエラーが。
    Error string not specified yet: Berkeley DB error while opening environment for filesystem /path/to/repository/db:\nPermission denied
    • svnadmin recoverがgroupのwを無くしてしまうため。db/*を0664に設定。
  • まだ壊れているとか言われる。

結局の対処法

  1. cvs2svnの直後にsvnadmin dumpリポジトリをダンプ。
  2. 一度、リポジトリディレクトリごと削除
  3. 再度、リポジトリを作成
  4. svnadmin loadでダンプファイルからリポジトリをロード
  5. svnadmin recoverリポジトリを修復
  6. db/*のパーミッションを0664に設定
  7. ついでに、db/ をchmod +sしておく。

以上でHTTP経由でリポジトリにアクセスできるようになった。

WebDAV書き込み問題

……と思ったら、WebDAVでは書き込めなかった。error_logを見ると、こんなログが出ていた。

[error] [client **.**.**.**] could not open dbm file s. [500, #13]
[error] [client **.**.**.**] Can't open activity db: Permission denied [500, #13]

原因は、WebDAV書き込み時には /path/to/repository/dav/ にも書き込みが必要だということ。ここのgroupのwビットが立っていなかったのでapacheが書き込めなかった模様。Subversionメーリングリストの記事にあったとおり、リポジトリ以下のファイルをすべて0660にした。ついでにdav/ をchmod +sしておく。