Subversion

Subversion関連のメモ。
[最終更新日: 2008/01/23]

1. インストール(debian)

| INDEX
Debian 3.1

DAV経由で使用する場合は、以下のパッケージを導入する。

apt-get install subversion libapache2-svn

2. リポジトリ操作

| | INDEX
リポジトリの作成
mkdir /home/svn
mkdir /home/svn/test
svnadmin create /home/svn/test
チェックアウト

ローカル内なら、

svn co file:///home/svn/test/

ネットワークごしでは、

svn co svn://[アドレス] (*) Subserve使用の場合
svn co http://[アドレス] (*) Apache経由の場合

ほかのコマンド(updateなど)については、svn help で。

リポジトリの修復

core dumpするときなどに。

svnadmin recover /home/svn/svn_test

3. 専用サーバ(subserve)の利用

| | INDEX

subversionのパッケージに含まれる専用サーバ(subserve)の設定をする。

  1. まず、リポジトリを作成。

    mkdir /home/svn
    mkdir /home/svn/svn_test
    svnadmin create /home/svn/svn_test
    
  2. svnserve.conf を設定する。

    # /home/svn/svn_test/conf/svnserve.conf [一部]
    [general]
     anon-access = none
     auth-access = write
     password-db = /home/svn/svn_test/conf/svnusers
    
  3. svnusersファイルを作成する。

    # /home/svn/svn_test/conf/svnusers
    [users]
     test = hoge
    

    平文パスワードだけど・・・・・・。(いいのだろうか?)

  4. サーバプロセスを起動する。(使いたいユーザのままで。特権ポートを使わないのでrootになる必要はない)

    svnserve -d --root=/home/svn/
    

    設定をとくにしなければ、TCP:3690 が使われるだろうか。

4. DAV経由の利用

| | INDEX

リポジトリの操作の手順でリポジトリの作成をしたのち、httpd.confに以下の設定をする。

# Apache Config File (httpd.conf)
<Location /svn_test>
        DAV     svn
        SVNPath /home/svn/svn_test
        <LimitExcept OPTIONS>
                AuthType        Digest
                AuthName        "test"
                Require         valid-user
                AuthDigestFile  /home/.svnpass
                AuthGroupFile   /dev/null
        </LimitExcept>
</Location>

あと、パーミッションの設定を忘れずに。使用するリポジトリのディレクトリに、Apacheのユーザによる読み書き権限が必要。

chown -R www-data:www-data /home/svn/svn_test

5. DAV経由の利用 SVNParentPath

| | INDEX

DAV経由の利用の項の設定では、レポジトリの数が増えてくると厄介。

そこで、SVNParentPathを使う方法がある。

# Apache Config File (httpd.conf)
<Location /svn>
        DAV                 svn
        SVNParentPath       /home/svn
        <LimitExcept OPTIONS>
                AuthType        Digest
                AuthName        "test"
                Require         valid-user
                AuthDigestFile  /home/.svnpass
                AuthGroupFile   /dev/null
        </LimitExcept>
</Location>

以上の設定で、仮に/home/svn/testというレポジトリがある場合、http://[host]/svn/test/でアクセスすることができる。

6. DAV経由の利用 AuthzSVNAccessFile

| INDEX

ユーザごとのきめ細かいアクセス権限の設定を行うために、AuthzSVNAccessFileを使う。

# Apache Config File (httpd.conf)
<Location /svn>
        DAV                 svn
        SVNParentPath       /home/svn
        AuthType        Digest
        AuthName        "test"
        Require         valid-user
        AuthDigestFile  /home/.svnpass
        AuthGroupFile   /dev/null
        AuthzSVNAccessFile  /home/svnaccess
</Location>

指定したファイルを以下のような形式で設定する。

# AuthzSVNAccessFile /home/svnaccess
[groups]
developer = hoge
reader = foo, bar

[test:/]
* =
@reader = r
@developer = rw

[sample:/]
* = r
@developer = rw

以上の設定の場合、.svnpassに記載のユーザに対して、

  1. /home/svn/testについて、hogeにRead+Writeの権限
  2. /home/svn/testについて、fooとbarにReadのみの権限
  3. /home/svn/testについて、そのほかのユーザはアクセス不可能
  4. /home/svn/sampleについて、hogeにRead+Writeの権限
  5. /home/svn/sampleについて、hoge以外のユーザにReadのみの権限

となる。

.