会社のPGソース管理はVisual Source Safe6.0(通称VSS)で行っていたのですが、VSSの新版である所のVSS2005はVSS6.0とは別途ライセンスを買わねばならないとかで、ついでに1ライセンス5万くらいする模様なのでぶっちゃけお話にならない。Visual StudioのEntepriseにも入ってないっぽいし……。

ついでVSS2005で出来るっぽいしやりたいなあ、とか妄想していたのが文書のWeb公開で、そもそも親会社相手の仕事だしLANが繋がっているわけだし、打ち合わせやらなんやらでも基本的にLAN繋がった所でプレゼンテーションを行うのでそれ程セキュリティ面を考える必要性も薄いしね。VSSのWeb公開用のモジュールも別途あるようだけれども、これまたライセンスがなァ? というわけでちょびちょびと仕事の合間に調べた所、Subversionというのがよさそうな感じ。

候補としては、SharePointServiceとかも考えたのだけれども、ローカルに置いたファイルと連携できる方がよさげなので、そっちを選択。他にも選択肢があるのかどうかは知らない。ちょびっと調べた所、それなりに使われているようだし情報も多そうなので、なんとかなるだろ、とノリと勢いで会社のテストサーバにインストール。

以下は最早メモ。

  1. Apache2.0.59をインストール
  2. Subversion1.4.4をインストール。(1)でApache2を入れていれば、[pache Group\Apache2\conf]フォルダにある『httpd.conf』は自動的に更新される。具体的には、以下の二行が付加されている。
    LoadModule dav_svn_module “d:/Program Files/Subversion/bin/mod_dav_svn.so”
    LoadModule authz_svn_module “d:/Program Files/Subversion/bin/mod_authz_svn.so”
  3. Subversionの公開フォルダを作成し、『httpd.conf』にその情報をカキコする。Windows統合認証としたいので、それ向けの書き方。リポジトリ毎にアクセス権を制御しない(ドメイン認証されていれば無条件で閲覧可能にする)場合は、AuthzSVNAccessFileをコメントアウト。AuthzSVNAccessFileとVNListParentPathはコンフリクトするようで、後者をOnにしておけば公開されたパスでリポジトリの一覧ができるのだけれども、アクセスファイルを設定すると見えなくなる。対処方法は探したけどわからんかった。私はアクセス制御優先で、リポジトリは別途インデックス作ってもいいかなと思ったり思わなかったり。
    <Location /svn>
    DAV svn
    SVNListParentPath on
    SVNParentPath <公開用フォルダパス>
    AuthType SSPI
    AuthName “Subversion repositories”
    SSPIAuth On
    SSPIAuthoritative On
    SSPIDomain <認証ドメイン>
    SSPIOfferBasic On
    SSPIOmitDomain on
    SSPIUsernameCase lower
    AuthzSVNAccessFile <リポジトリアクセス権制御ファイルパス>
    #SSPIPerRequestAuth on
    Require valid-user
    </Location>
  4. 統合認証用のモジュールをここから落として「Apache Group\Apache2\modules」に突っ込み、『httpd.conf』ファイルに以下の行を追加。
    LoadModule sspi_auth_module modules/mod_auth_sspi.soロード順序の関係上、以下の行の前に追加する必要があるようだ。
    LoadModule auth_module modules/mod_auth.so
  5. サーバ側でsubversionのコマンドを打ってリポジトリの作成。
    svnadmin create –fs-type [fsfs|Berkeley]? [作成先パス]
  6. AuthzSVNAccessFile <リポジトリアクセス権制御ファイルパス> で指定されたリポジトリのアクセス権制御ファイルを作る。アカウント名は大文字小文字を個別に認識。lowerなので小文字として認識されるので、小文字で比較。ドメインを入れている場合はユーザ名だけでOK。複数ドメインの場合はどうなんだろ?
    リポジトリからの読み込みの時は制御ファイルで指定されたリポジトリの大文字小文字は関係ないのだけれども、書き込みに限ってはリポジトリ名の大文字小文字を認識するようだ……。
    以下サンプル。UTF-8で。
    [groups]
    ADMIN = shepherd
    [test:/trunk]
    @ADMIN = rw
    [test:/branches]
    @ADMIN = r
コメントする