Subversion

(最終更新日時:2010-02-10 12:32:12)
ソースファイル等のバージョン管理を行うため、バージョン管理システム Subversion を導入します。

Subversion は、バージョン管理システム CVS の問題点を解決すべく開発され、Windows 上での開発環境 EclipseMicrosoft Visual Studio から使用するためのプラグインも存在しています。

なお、Subversion サーバーへの接続は SSH によるセキュア接続のみで行うことにします。
SSH を使用することにより、セキュア接続だけではなく、プロジェクトへの参加メンバーをログインユーザーとして作成しなくてもいいというメリットもあります。

インストール

Subversion がインストールされていない場合、yum でインストールします。
# yum -y install subversion

初期設定

セキュリティや管理面から Subversion 用グループを作成します。
また、Subversion のルートディレクトリを作成します。
# groupadd svn

# # Subversion を SSH 接続で使用しますので、作成した Subversion 用グループの SSH 接続を許可します
# vi /etc/ssh/sshd_config

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

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

# # Subversion のルートディレクトリを作成します
# mkdir -p /home/svn

リポジトリの作成

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

# useradd svnusrpj1 -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 - svnusrpj1
$ 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

参加メンバーの鍵セット作成

プロジェクト project1 へのログインユーザーを svnusrpj1 で作成しました。
プロジェクトへの参加メンバーは OpenSSH の公開鍵を使用した tunnel 機能で識別します。

PuTTY・鍵セットの作成鍵セットの作成 を参照して、各プロジェクトの参加メンバーが鍵セットを作成します。
PuTTY で鍵セットを作成できない場合は、参加メンバーからパスフレーズを受け取り、下記によりサーバー側で鍵の作成を代行します。
なお、ログインユーザーとして既に SSH の鍵セットを所有している参加メンバーの場合は、新たに鍵セット作成する必要はなく、所有している鍵を使用して構いません。
(※参加メンバを member1 としています)
# su - svnusrpj1
$ ssh-keygen -t rsa -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: パスフレーズ再入力
     :
.ssh ディレクトリ内の秘密鍵 id_rsa を参加メンバーに渡し、サーバーからは削除します。

参加メンバー登録

参加メンバーから公開鍵を受け取ったら、ログインユーザー svnusrpj1 に登録します。
# su - svnusrpj1

$ # .ssh ディレクトリが存在しない場合は作成します
$ mkdir .ssh
$ chmod 700 .ssh

$ # PuTTY で作成した公開鍵は IETF SECSH 形式になっていますので、OpenSSH 方式に変換します
$ cd .ssh
$ ssh-keygen -i -f PuTTYの公開鍵ファイル > id_rsa.pub
$ rm  PuTTYの公開鍵ファイル

$ # tunnel 設定を公開鍵の ssh-rsa の前に付加します
$ # また、公開鍵の末尾に空白を 1 つ空けて管理用のコメントも付加しておきます
$ vi id_rsa.pub
command="svnserve -t --tunnel-user=member1 -r /home/svn/project1",no-port-forwarding,no-agent-forwarding,no-X11-forwarding,no-pty ssh-rsa ...(中略)...== 末尾に空白を1つ空けて任意の管理用コメントを追加

$ cat id_rsa.pub >> authorized_keys
$ rm  id_rsa.pub
$ exit
※ tunnel 設定の --tunnel-user が Subversion のユーザーになります。
※ tunnel 設定の -r オプションにより、プロジェクトリポジトリをトップレベルのディレクトリにしています。

上記の設定により、ログインユーザー svnusrpj1 で Subversion サーバーへログインすることができます。

フィードバック

記事の内容についてのご質問、ご指摘、その他ご意見等は、Weblogにてお願いしています。

System House ACT Weblog 内記事 : サーバー運用情報 Subversion

トラックバックまたはコメントにてお寄せください。
 
a System House to build an Accounting system by the Computer Technology