Subversion共有リポジトリ設定メモ(Linux/CentOS)
Subversionでリポジトリを共有するには以下の方式があります。
・ssh
・http(Apache+mod_dav_svn.so)
・svnserve
色々試してみましたが、「Apache Subversion」というだけあって http(Apache)を使うのがサクッといきます。
以下LAMP構成済のサーバに設定した時のメモです。
リポジトリ閲覧用に「ViewVC」もインストールします。
この親ディレクトリ「/var/www/subversion」を Apache+mod_dav_svn.so で設定します。
※リポジトリディレクトリではなく、親ディレクトリを設定する点に注意です。
プロジェクトごとにディレクトリを分けて管理すると、リビジョン番号が独立されユーザのアクセス制限もプロジェクトごとに設定できるのでオススメです。
「/var/www/subversion/project1」
「/var/www/subversion/project2」
「/var/www/subversion/project3」
以上です。
・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
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」が共有リポジトリです。svnadmin create /var/www/subversion/repos
sudo chown -R apache:apache /var/www/subversion
この親ディレクトリ「/var/www/subversion」を Apache+mod_dav_svn.so で設定します。
※リポジトリディレクトリではなく、親ディレクトリを設定する点に注意です。
Apacheの設定
オリジナルのコンフィグをキープ
今回はVirtualHostを使って設定します。URLは「http://svn/」になります。
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>
------------------------------
---(下記を追加)---------------------------
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ユーザ作成してみます。
ブラウザで「http://svn/repos/」にアクセスして以下のように表示されればOKです。

htpasswd -c /var/www/.svnusers harry
htpasswd /var/www/.svnusers sally
htpasswd /var/www/.svnusers sally
ブラウザで「http://svn/repos/」にアクセスして以下のように表示されればOKです。

ViewVCインストール(リポジトリ閲覧用)
RPMforgeリポジトリからインストールします。
ViewVCの設定
オリジナルのApahceコンフィグをキープ
こちらもVirtualHostで設定します。URLは「http://viewvc.svn/svn/」です。
Apache再起動
ブラウザで「http://viewvc.svn/svn/」にアクセスして以下のように表示されればOKです。

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
------------------------------
---(下記を変更)---------------------------
#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>
------------------------------
---(下記を追加)---------------------------
<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です。

動作テスト
クライアントPCの適当なディレクトリで作業します。
プロジェクトディレクトリの作成
リポジトリに登録
下記のような表示がされれば登録完了です。
登録後、元ディレクトリは削除してOKです。
チェックアウト〜コミット確認
下記のような表示がされればOKです。
サーバ上ディレクトリのパーミッション関連確認のためユーザ「sally」でもチェックアウト〜コミットしてみます。
下記のような表示がされればOKです。
動作テストでは「/var/www/subversion/repos」以下にプロジェクトリポジトリを作成しましたが、リビジョン番号が「repos」以下で共有されてしまいます。プロジェクトディレクトリの作成
mkdir -p sample/branches
mkdir sample/tags
mkdir sample/trunk
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.
追加しています 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
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
サンプルプロジェクトの登録
------------------------------------------------------------------------
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
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
サンプルプロジェクトの登録
------------------------------------------------------------------------
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/project1」
「/var/www/subversion/project2」
「/var/www/subversion/project3」
以上です。
08
| h o m e |