SVN多バージョンライブラリの構成問題


SVNに接触したばかりの時、Windowsの下で、その多バージョンライブラリの構成問題に悩まされて、完璧な解決策が見つからなくて、今日はLinuxの下にSVNを配置すると、それ自体がサポートされていることが分かりました。構成--config-file参数でグローバルな配置ファイルを指定して実現しました。この文章を書いて、以前の間違った配置を直します。(主にWindowsシステムの下です。)
LinuxとWindowsの下で処理するのは基本的に同じです。まずLinuxの下のsvnserveのヘルプ情報を見にきます。
[root@localhost ~]# svnserve --help
usage: svnserve [-d | -i | -t | -X] [options]

Valid options:
  -d [--daemon]            : daemon mode
  -i [--inetd]             : inetd mode
  -t [--tunnel]            : tunnel mode
  -X [--listen-once]       : listen-once mode (useful for debugging)
  -r [--root] ARG          : root of directory to serve
  -R [--read-only]         : force read only, overriding repository config file
  --config-file ARG        : read configuration from file ARG
  --listen-port ARG        : listen port
                             [mode: daemon, listen-once]
  --listen-host ARG        : listen hostname or IP address
                             [mode: daemon, listen-once]
  -T [--threads]           : use threads instead of fork [mode: daemon]
  --foreground             : run in foreground (useful for debugging)
                             [mode: daemon]
  --log-file ARG           : svnserve log file
  --pid-file ARG           : write server process ID to file ARG
                             [mode: daemon, listen-once]
  --tunnel-user ARG        : tunnel username (default is current uid's name)
                             [mode: tunnel]
  -h [--help]              : display this help
  --version                : show program version information
一般的にSVNサービスが開始され、SVNバージョンライブラリのルートディレクトリのみが指定される。
svnserve -d -r /data/svn
その後、/data/svnで複数のバージョンライブラリを作成します。
cd /data/svn
svnadmin create repos1
svnadmin create repos2
repos 1やrepos 2などのバージョンライブラリのconf/svnserve.co nf、conf/passwd、conf/authzファイルを順次配置します。
問題が近づいてきました。ほとんどの場合、同じユーザーが同じアカウントとパスワードで別のバージョンライブラリにアクセスする必要があります。この時の権限配置はうまく処理できなくなりました。以前に他の人の解決方法を見たのは、svnserve.co nfでpasswdとauthzのパスを指定する時、相対パスで同じファイルを指しました。これは実行可能な方法ですが、ライブラリが追加されると、svnserve.com nfファイルを変更しなければなりません。不便です。
svnserveのヘルプ情報をよく見ると、みんなが一つの「config-fileパラメータ」があります。このパラメータはsvnserve.co nfパスを指定するものです。この問題は明らかになりました。SVNサービスを起動する時に、「config-fileパラメータ」を指定すると、すべての権限はパラメータによって指定されたsvnserve.各バージョンのライブラリのディレクトリの下のsvnserve.com nfの構成は無視されます。具体的な起動パラメータは以下の通りです。
svnserve -d -r /data/svn --config-file /data/svn/svnserve.conf
rpmパッケージをインストールするとsvnサービスが自動的にインストールされます。設定/etc/syssconfig/svnserveファイルだけが必要です。
#vim /etc/sysconfig/svnserve
OPTIONS="-r /data/svn --config-file /data/svn/svnserve.conf"
WindowsではCollabNetのSubversion Serverを使用しています。インストールされたサービスはImagePath形式で指定されています。今はレジストリにSVNのサービスのImagePathパラメータを変更して、config-fileパラメータを追加します。
"d:\Program Files (x86)\CollabNet\Subversion Server\svnserve.exe" --service -r "e:\svn_repository" --listen-port "3690" --config-file "e:\svn_repository\conf\svnserve.conf"
上記で使用した経路などは、それぞれの経路に変換してください。