世界線航跡蔵

Mad web programmerのYuguiが技術ネタや日々のあれこれをお送りします。

2005年01月12日

CVSからSubversionへの移管

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

目標

  • Subversion + Apache によるWebDAV経由の自動バージョン管理
  • 既存のCVSリポジトリはそのまま移行

正攻法

  • Subversion, mod_dav_svn, Apacheをインストール。
  • ユーザーsvnを作成して、svn所有のリポジトリを作成。
  • Subversionを使うユーザーとapacheユーザーをまとめてsvnグループに追加。
  • cvs2svn.py でCVSをSubversionに移管。このスクリプトは:pserverなリポジトリの指定は受け付けないみたいなので、CVSサーバーから丸ごとSubversionサーバーにリポジトリを持ってきて、実行。
  • で、あとはよしなにApacheを設定。

問題

  • ブラウザからアクセスすると500でメッセージは次のとおり。
    Could not open the requested SVN filesystem
    • Apacheのエラーログを見てみると、リポジトリが壊れているらしい。
  • 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しておく。

トラックバック

http://yugui.jp/articles/167/ping
Subversionリポジトリの一覧 (ratio - rational - irrational)
複数のSubversionリポジトリをWebDAV上にて一覧する。

コメント

blog comments powered by Disqus

ご案内

前の記事
次の記事

タグ一覧

過去ログ

  1. 2016年07月
  2. 2016年01月
  3. 2015年09月
  4. 2015年08月
  5. 過去ログ一覧

フィード

フィードとは

その他

Powered by "rhianolethe" the blog system