Subversion運用

(最終更新日時:2008-12-28 20:58:28)
バージョン管理システム Subversion の運用設定を行います。

初期設定

subversion用グループとsubversionのルートディレクトリを作成します。
# groupadd svn
# mkdir -p /home/svn

# vi /etc/ssh/sshd_config

       :
AllowGroups svn                                          SSHの接続グループに svn を追加します
       :

# service sshd restart                                   SSHデーモンを再起動します

リポジトリの作成

プロジェクトのリポジトリとログインユーザーを作成します。
管理およびセキュア面からプロジェクトの参加メンバーごとにログインユーザーを作成せず、プロジェクト単位にログインユーザーを作成しています。
参加メンバーは OpenSSH の tunnel 機能で識別させます。
(※プロジェクト名およびログインユーザーを project1 としています)
# svnadmin create --fs-type fsfs /home/svn/project1

# useradd project1 -M -g svn -d /home/svn/project1

# chown -R project1.svn /home/svn/project1
# chmod -R 770 /home/svn/project1
# chmod    710 /home/svn/project1
# chmod g+s    /home/svn/project1/db

# su - project1
$ mkdir -p svntemp/trunk svntemp/branches svntemp/tags
$ svn import svntemp file://localhost/home/svn/project1 -m "Create the Initial Directory"
$ rm -rf svntemp
$ exit

参加メンバー登録

プロジェクトの参加メンバーごとに OpenSSH の鍵セットを作成します。
(※参加メンバを member1 としています)
# su - project1
$ ssh-keygen -b 1024 -t dsa -C "Subversion Project - project1 : member1"
Generating public/private dsa key pair.
Enter file in which to save the key (/home/svn/project1/.ssh/id_dsa): [Enter]
Created directory '/home/svn/project1/.ssh'.
Enter passphrase (empty for no passphrase): パスフレーズ
Enter same passphrase again: パスフレーズ再入力
     :

$ cd .ssh
$ vi id_dsa.pub

(以下を ssh-dss の前に付け加えます)
(tunnel-user オプションを指定することにより、Subversion のユーザー名は参加メンバーになります)
(サーバーのディレクトリ構成を秘匿するため -r オプションをフルパスで指定してします)
command="svnserve -t --tunnel-user=member1 -r /home/svn/project1",no-port-forwarding,no-agent-forwarding,no-X11-forwarding,no-pty ssh-dss ~

$ cat id_dsa.pub >> authorized_keys
$ rm  id_dsa.pub
$ exit

(※ /home/svn/project1/.ssh/id_dsa を 参加メンバ member1 へ配布します)
(※ ログインユーザ名 project1member1 のパスフレーズ を併せて通知します)

# rm  /home/svn/project1/.ssh/id_dsa                     配布後、削除します
a System House to build an Accounting system by the Computer Technology