SVN多バージョンライブラリの構成問題
SVNに接触したばかりの時、Windowsの下で、その多バージョンライブラリの構成問題に悩まされて、完璧な解決策が見つからなくて、今日はLinuxの下にSVNを配置すると、それ自体がサポートされていることが分かりました。構成--config-file参数でグローバルな配置ファイルを指定して実現しました。この文章を書いて、以前の間違った配置を直します。(主にWindowsシステムの下です。)
LinuxとWindowsの下で処理するのは基本的に同じです。まずLinuxの下のsvnserveのヘルプ情報を見にきます。
問題が近づいてきました。ほとんどの場合、同じユーザーが同じアカウントとパスワードで別のバージョンライブラリにアクセスする必要があります。この時の権限配置はうまく処理できなくなりました。以前に他の人の解決方法を見たのは、svnserve.co nfでpasswdとauthzのパスを指定する時、相対パスで同じファイルを指しました。これは実行可能な方法ですが、ライブラリが追加されると、svnserve.com nfファイルを変更しなければなりません。不便です。
svnserveのヘルプ情報をよく見ると、みんなが一つの「config-fileパラメータ」があります。このパラメータはsvnserve.co nfパスを指定するものです。この問題は明らかになりました。SVNサービスを起動する時に、「config-fileパラメータ」を指定すると、すべての権限はパラメータによって指定されたsvnserve.各バージョンのライブラリのディレクトリの下のsvnserve.com nfの構成は無視されます。具体的な起動パラメータは以下の通りです。
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"
上記で使用した経路などは、それぞれの経路に変換してください。