09 « 1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.» 11

Subversion共有リポジトリ設定メモ(Linux/CentOS) 

Subversionでリポジトリを共有するには以下の方式があります。

・ssh
・http(Apache+mod_dav_svn.so)
・svnserve

色々試してみましたが、「Apache Subversion」というだけあって http(Apache)を使うのがサクッといきます。

以下LAMP構成済のサーバに設定した時のメモです。
リポジトリ閲覧用に「ViewVC」もインストールします。

Subversion関連のインストール
yum -y install subversion
yum -y install mod_dav_svn


共有リポジトリの作成
mkdir /var/www/subversion
svnadmin create /var/www/subversion/repos
sudo chown -R apache:apache /var/www/subversion
「/var/www/subversion/repos」が共有リポジトリです。
この親ディレクトリ「/var/www/subversion」を Apache+mod_dav_svn.so で設定します。
※リポジトリディレクトリではなく、親ディレクトリを設定する点に注意です。


Apacheの設定
オリジナルのコンフィグをキープ
mv /etc/httpd/conf.d/subversion.conf /etc/httpd/conf.d/subversion.conf.org

今回はVirtualHostを使って設定します。URLは「http://svn/」になります。
vi /etc/httpd/conf.d/subversion.conf
---(下記を追加)---------------------------
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so

<VirtualHost *:80>
    ServerName svn
    <Location />
        DAV svn
        SVNParentPath /var/www/subversion
        AuthType Basic
        AuthName "Subversion Repository Realm"
        AuthUserFile /var/www/.svnusers
        Require valid-user
    </Location>
    ErrorLog logs/svn_error_log
    CustomLog logs/svn_access_log combined
</VirtualHost>
------------------------------

Apache再起動
service httpd restart

共有リポジトリの設定は以上です。


ユーザの作成
テスト用に2ユーザ作成してみます。
htpasswd -c /var/www/.svnusers harry
htpasswd /var/www/.svnusers sally

ブラウザで「http://svn/repos/」にアクセスして以下のように表示されればOKです。
svn01.png


ViewVCインストール(リポジトリ閲覧用)
RPMforgeリポジトリからインストールします。
yum -y --enablerepo=rpmforge install viewvc

ViewVCの設定
vi /etc/viewvc/viewvc.conf
---(下記を変更)---------------------------
#root_parents =
 ↓
root_parents = /var/www/subversion: svn

#use_localtime = 0
 ↓
use_localtime = 1
------------------------------

オリジナルのApahceコンフィグをキープ
mv /etc/httpd/conf.d/viewvc.conf /etc/httpd/conf.d/viewvc.conf.org

こちらもVirtualHostで設定します。URLは「http://viewvc.svn/svn/」です。
vi /etc/httpd/conf.d/viewvc.conf
---(下記を追加)---------------------------
<VirtualHost *:80>
ServerName viewvc.svn

    ScriptAlias /svn /var/www/cgi-bin/viewvc.cgi
    ScriptAlias /query /var/www/cgi-bin/query.cgi
    Alias /viewvc-static /var/www/viewvc

    <Directory /var/www/viewvc>
        Allow from all
    </Directory>

    <Location />
        AuthType Basic
        AuthName "Subversion Repository Realm"
        AuthUserFile /var/www/.svnusers
        Require valid-user
    </Location>

    ErrorLog logs/viewvc_error_log
    CustomLog logs/viewvc_access_log combined
</VirtualHost>
------------------------------

Apache再起動
service httpd restart

ブラウザで「http://viewvc.svn/svn/」にアクセスして以下のように表示されればOKです。
svn02.png


動作テスト
クライアントPCの適当なディレクトリで作業します。

プロジェクトディレクトリの作成
mkdir -p sample/branches
mkdir sample/tags
mkdir sample/trunk

リポジトリに登録
svn --username harry import sample http://svn/repos/sample -m "サンプルプロジェクトの登録"

下記のような表示がされれば登録完了です。
追加しています sample/branches
追加しています sample/tags
追加しています sample/trunk

Committed revision 1.

登録後、元ディレクトリは削除してOKです。
rm -rf sample

チェックアウト〜コミット確認
svn --username harry checkout http://svn/repos/sample/trunk harry_sumple
cd harry_sumple/
echo "test" > test.txt
svn add test.txt
svn commit -m "テストファイルの追加"
svn up
svn log

下記のような表示がされればOKです。
------------------------------------------------------------------------
r2 | harry | 2012-10-08 22:38:24 +0900 (月, 08 10 2012) | 1 line

テストファイルの追加
------------------------------------------------------------------------
r1 | harry | 2012-10-08 22:23:20 +0900 (月, 08 10 2012) | 1 line

サンプルプロジェクトの登録
------------------------------------------------------------------------

サーバ上ディレクトリのパーミッション関連確認のためユーザ「sally」でもチェックアウト〜コミットしてみます。
svn --username sally checkout http://svn/repos/sample/trunk sally_sumple
cd sally_sumple/
echo "addline" >> test.txt
svn commit -m "2行目(addline)を追記"
svn up
svn log

下記のような表示がされればOKです。
------------------------------------------------------------------------
r3 | sally | 2012-10-08 22:46:52 +0900 (月, 08 10 2012) | 1 line

2行目(addline)を追記
------------------------------------------------------------------------
r2 | harry | 2012-10-08 22:38:24 +0900 (月, 08 10 2012) | 1 line

テストファイルの追加
------------------------------------------------------------------------
r1 | harry | 2012-10-08 22:23:20 +0900 (月, 08 10 2012) | 1 line

サンプルプロジェクトの登録
------------------------------------------------------------------------


動作テストでは「/var/www/subversion/repos」以下にプロジェクトリポジトリを作成しましたが、リビジョン番号が「repos」以下で共有されてしまいます。
プロジェクトごとにディレクトリを分けて管理すると、リビジョン番号が独立されユーザのアクセス制限もプロジェクトごとに設定できるのでオススメです。

「/var/www/subversion/project1」
「/var/www/subversion/project2」
「/var/www/subversion/project3」


以上です。

Posted on 2012/10/08 Mon. 23:27 [edit]

category: サーバ

thread: サーバー  -  janre: コンピュータ

TB: 0    CM: 0

08