Subversion for Windows
インストールと設定
INSTALLING SUBVERSION A Quick Guide
Subversion によるバージョン管理 - httpd, Apache HTTP サーバ
http://subversion.tigris.org/ から svn-win32-1.1.3-2.zip を取得.取得した zip ファイルを D:\ に展開.D:\svn-win32-1.1.3\bin に PATH を通して Windows を再起動.
httpd.conf の
LoadModule dav_module modules/mod_dav.so LoadModule dav_fs_module modules/mod_dav_fs.so
のコメントを外し,以下の記述を追加.
LoadModule dav_svn_module "D:/svn-win32-1.1.3/httpd/mod_dav_svn.so" LoadModule authz_svn_module "D:/svn-win32-1.1.3/httpd/mod_authz_svn.so" <Location /svn/repos> DAV svn SVNPath D:/Apache2/repos (リポジトリへの絶対パスの例) </Location>
その後,Apache を再起動.
リポジトリの初期化
リポジトリへの絶対パスが D:\Apache2\repos のとき,
D:\>svnadmin create D:\Apache2\repos
でリポジトリを初期化.その後,ブラウザで http://localhost/svn/repos/ にアクセスして "Revision 0: /" というタイトルの Web ページが出力されればテスト完了.
リポジトリへ test ディレクトリをコミットするには,
D:\>svn import -m "コメント" test http://localhost/svn/repos/
とすればよい.
はまり所
Cygwin がインストールされている場合,Cygwin の /usr/bin にも svn や svnadmin などが含まれている.環境変数 PATH で Cygwin の bin ディレクトリが D:\svn-win32-1.1.3\bin よりも優先されるようになっていれば,httpd.conf に指定した D:/svn-win32-1.1.3/httpd/mod_dav_svn.so と不整合が起こるのか,色々な不具合がある.(私の環境では Cygwin 版 svn のバージョンは 1.0.6 (r10360) だった.Cygwin 版と Windows 版の不整合か,バージョンの不整合かは未確認.)echo %PATH% や which svn などして Cygwin 版と Windows 版のどちらが優先されているか確認しておくとよい.
Cygwin 版 svnadmin でリポジトリを初期化したとき,ブラウザで http://localhost/svn/repos/ にアクセスしても "HTTP 500 内部サーバー エラー" というタイトルの Web ページが出力される.
Cygwin 版 svn で svn import したときのエラー表示は
$ svn import -m "hoge" test http://localhost/svn/repos/ svn: PROPFIND request failed on '/svn/repos' svn: Could not open the requested SVN filesystem
これらを実行するたびに,Apache2 の error.log には
[Fri Feb 04 04:22:46 2005] [error] [client 127.0.0.1] (20014)Error string not specified yet: Berkeley DB error while opening environment for filesystem D:/Apache2/repos/db:\nInvalid argument [Fri Feb 04 04:22:46 2005] [error] [client 127.0.0.1] Could not fetch resource information. [500, #0] [Fri Feb 04 04:22:46 2005] [error] [client 127.0.0.1] Could not open the requested SVN filesystem [500, #160029] [Fri Feb 04 04:22:46 2005] [error] [client 127.0.0.1] Could not open the requested SVN filesystem [500, #160029]
このようなエラーが記録される.
リポジトリの認証
上で設定した Location ブロックに以下の記述と
AuthType Basic AuthName "Subversion repository" AuthUserFile /my/svn/user/passwd/file (パスワードファイルへの絶対パス)
以下の a 〜 c のいずれかの記述を加える.
a) 読み書きのアクセス制限
Require valid-user
b) 書き込みのアクセス制限
<LimitExcept GET PROPFIND OPTIONS REPORT> Require valid-user </LimitExcept>
c) 読み込みと書き込みで別々のアクセス制限
AuthGroupFile /my/svn/group/file (グループファイルへの絶対パス) <LimitExcept GET PROPFIND OPTIONS REPORT> Require group svn_committers </LimitExcept> <Limit GET PROPFIND OPTIONS REPORT> Require group svn_committers Require group svn_readers </Limit>