サーバ側でリポジトリを作成し、作業ディレクトリにチェックアウトまではできるが、作業ディレクトリからコミットできない現象に遭遇しました。
その時のクライアント側のログ:
$ svn add hoge.txt
A hoge.txt
$ svn commit hoge.txt
Log message unchanged or not specified
a)bort, c)ontinue, e)dit
c
svn: Commit failed (details follow):
svn: Can't open activity db: No such file or directory
ファイルが見つからないってどういうこと?サーバ側のログ (Apacheのerror_log):
[Wed May 27 14:28:14 2009] [error] [client 202.218.216.13] Could not create activity /repos/tmprepo/!svn/act/c41a20c5-6b08-4c73-9da5-e41a2da69086. [500, #0]
[Wed May 27 14:28:14 2009] [error] [client 202.218.216.13] could not open dbm files. [500, #2]
[Wed May 27 14:28:14 2009] [error] [client 202.218.216.13] Can't open activity db: No such file or directory [500, #2]
どうやらsvnの管理情報が書けないエラーのようです。「Could not create activity」でググってみると、
どうやらリポジトリ直下にdavディレクトリを作成しなければならないらしい。
mkdir /path/to/repo/dav
しかし、別件で作成したリポジトリはそんなことしなくても良かったのになと思ったので、もしかしたらsubversionのバージョンによってリポジトリの構造が違うのかもと思ったら、やっぱりそうらしいです。
After some time searching around for others that had encountered this error, I was able to determine that the problem was that version 1.5 of the svnadmin create command doesn’t create a “dav” directory in the repository, unlike earlier versions.
via: subversion ‘can’t open activity db’| johngirvin.com
1.5から dav/ディレクトリは作られなくなったので手動で作成しろと。。
また同じようにハマりそうなのでエントリ書きました。
でも、もうちょっと気が利いたエラーメッセージにして欲しかったな。