Subversionのインストール - バージョン管理システム †
CVSの諸問題を解決すべく開発されている。
ディレクトリの移動や削除のサポート、リビジョン番号のソースツリー全体に対して採番、などCVSにはない機能がある。
SVNクライアントとしては、TortoiseSVN が有名&使いやすい。(関わったプロジェクトのほとんどで利用されていた。)
ただ、EclipseプラグインのSVNクライアントと .svn下のファイル形式が違うのか、Eclipseでチェックアウトしたソースを、
TortoiseSVNでコミットしようとして、なんかおかしな事になった記憶がある。(逆だったかも。。あんまり覚えてない。)
ここでは svnserve形式(port:3690)でも、http形式でも動作するようにインストールを行う。
◆Apacheのリコンパイル(davを有効にする)
|
cd httpd-2.0.52
make distclean
./configure --enable-module="so ssl dav" --enable-dav --enable-rewrite=shared --enable-ssl --with-ssl=/usr/local/ssl
make
make install
|
◆Subversionのインストール
|
tar xzf subversion-1.4.4.tar.gz
cd subversion-1.4.4
./configure --prefix=/usr/local \
--disable-mod-activation \
--enable-swig-bindings=python \
--with-apr=/usr/local/apache2/bin/apr-config \
--with-apr-util=/usr/local/apache2/bin/apu-config \
--with-apxs=/usr/local/apache2/bin/apxs \
--without-berkeley-db \
--with-zlib \
--with-swig=/usr/local
configure: error: invalid apr version found
と怒られる。aprのバージョンが低いらしい。
わざわざ Apacheのバージョン上げるのもメンドイので、別途、必要な依存モジュールを取得してインストールを続行する。
http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=7495&expandFolder=7495&folderID=260 から
依存モジュール( subversion-deps-1.4.4.tar.gz ) をダウンロード、展開して再度 configure
./configure --prefix=/usr/local \
--disable-mod-activation \
--enable-swig-bindings=python \
--with-apr=./apr/apr-config \
--with-apr-util=./apr-util/apu-config \
--with-apxs=/usr/local/apache2/bin/apxs \
--without-berkeley-db \
--with-zlib \
--with-swig=/usr/local
make
make install
# mod_dav_svn と mod_authz_svn がないと怒られるので、
# ソースディレクトリからコピーして再度 make install
cp ./subversion/mod_dav_svn/.libs/mod_dav_svn.so /usr/local/apache2/modules
cp ./subversion/mod_authz_svn/.libs/mod_authz_svn.so /usr/local/apache2/modules/
make install
make swig-py
make install-swig-py
/sbin/ldconfig
|
◆SVNリポジトリの作成
|
svnadmin create --fs-type=fsfs /path/to/svn_rep
|
◆ /etc/services に下記を追加 ( svnserveで利用する場合 )
|
svnserve 3690/tcp
svnserve 3690/udp
|
◆ /etc/xinetd.d/svnserve を作成 ( svnserveで利用する場合 )
|
# default: off
# description: An internal xinetd service, listing active servers.
service svnserve
{
disable = no
socket_type = stream
protocol = tcp
wait = no
user = root
server = /usr/bin/svnserve
server_args = -i
}
|
◆httpd.confに設定を追加 ( httpで利用する場合 )
|
LoadModule dav_svn_module modules/mod_dav_svn.so
・
・
・
# SVNリポジトリ用の設定 ( httpで利用する場合 )
<Location /svn/myproject>
DAV svn
SVNPath /path/to/svn_repos
#Basic認証の設定
AuthType Basic
AuthName "Subversion repository"
AuthUserFile /path/to/.htpasswd
Require valid-user
</Location>
|
◆SVNユーザの作成 ( httpで利用する場合 )
|
htpasswd -c /path/to/.htpasswd ユーザ名
|
◆Apacheの再起動 ( httpで利用する場合 )
|
/etc/init.d/httpd restart
|
◆SVNアクセス用のURL
svn://ホスト名/path/to/svn_repos ※svnserveの場合
http://ホスト名/svn/myproject ※httpの場合
◆SVNの使い方
# リポジトリ作成
svnadmin create path_to_rep
svn mkdir -m "make" file:///path_to_rep/trunk
svn mkdir -m "make" file:///path_to_rep/tags
svn mkdir -m "make" file:///path_to_rep/branches
# 空の作業コピーを作成
cd /path_to_parent/
svn co file:///path_to_rep/trunk example1
# 作業
cd /path_to_parent/example1
.
.
# SVN管理下に追加
svn add * --force
# addを取り消すファイルの指定
svn revert --depth infinity public_html/tmp
# 除外するファイル/ディレクトリの設定
svn propset svn:ignore 'tmp' ./public_html
# 最新をtrunkへ
svn commit -m "1st commit"
# タグ/ブランチの作成
svn copy -m "copy" file:///path_to_rep/trunk file:///path_to_rep/tags/1.0.1
# trunkから別ディレクトリにチェックアウト
cd ../
svn co file:///path_to_rep/trunk example2
# 作業コピーがどのタグやブランチのものか調べる
svn info | grep URL
# 作業コピーのブランチを切り替える(自動でupdateされる)
svn switch file:///path_to_rep/tags/1.0.1
# タグが作成されたリビジョンを見つける
cd example2
svn log --verbose --stop-on-copy file:///path_to_rep/tags/1.0.1