Tracは使いこなせないのでSubversionだけでやってみる
運用イメージはこんな感じ
http://subversion.apache.org/
svnサーバにインストールする
# tar xvzf subversion-1.6.17.tar.gz # tar xvzf subversion-deps-1.6.17.tar.gz # cd subversion-1.6.17 # ./configure # make # make install
1.7以降は subversion-deps-1.7.*.tar.gz は無くなったようです。
Aapacheはソースからインストール済みで、DAVは使用しないので、オプションは以下で大丈夫かと。
# tar xvzf subversion-1.7.1.tar.gz # cd subversion-1.7.1 # ./get-deps.sh # ./configure --with-apr-util=/usr/local/apache2 --without-serf # make # make install
get-deps.sh で取得されるものは、
apr-1.4.5.tar.bz2 apr-util-1.3.12.tar.bz2 neon-0.29.6.tar.gz serf-0.7.2.tar.bz2 zlib-1.2.8.tar.bz2 sqlite-amalgamation-3070603.zip
1.7になって変わったところは .svn フォルダが作業フォルダのトップだけに作成されるようになった!
apache2.4以降、subversion1.7.4以降の場合は以下
# ./configure --with-apr-util=/usr/local/apr-util
subversion1.8.13以降の場合は
# ./configure --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util
しかし、クライアントのTortoiseSVNバージョン1.8.11では以下のエラーが出て使用できず。
Expected FS format between '1' and '4'; found format '6'
下位互換で利用するためには以下で作成するとOK
# svnadmin create --compatible-version 1.6 --fs-type fsfs /home/svn/test_dev
/usr/bin/ld: cannot find -lexpat
と表示される場合は expat-devel を入れる
# yum install expat-devel
1.9.3を入れようとすると、
# ./get-deps.sh If you require mod_dav_svn, the recommended version of httpd is: http://archive.apache.org/dist/httpd/httpd-2.4.10.tar.bz2 If you require apr-iconv, its recommended version is: http://archive.apache.org/dist/apr/apr-iconv-1.2.1.tar.bz2
と出るが無視してインストール続行
しかし、クライアントからチェックアウトしようとすると以下のエラーが発生
Unable to connect to a repository at URL 'svn://portal4.yapy.jp/portal4' '/home/svn/portal4/db/format' contains invalid filesystem format option 'addressing logical'
調べると fsfsフォーマットが違って云々あったので、1.8にダウングレードした方がいいらしい。
単体のデーモンとしても動作させることができるが、inetd経由で動かす
# vi /etc/xinetd.d/svn
service svn { disable = no socket_type = stream protocol = tcp wait = no user = nobody server = /usr/local/bin/svnserve server_args = -i -r /home/svn }
1.7.4あたりからは以下
server = /usr/bin/svnserve
# /sbin/chkconfig --add svn # /etc/rc.d/init.d/xinetd restart
xinetdが入っていない場合は
# yum install xinetd
クライアントと公開サーバからのみ接続を許可する
# vi /etc/hosts.allow
svnserve: 192.168.0.2 192.168.0.4 ALL: ALL :deny
# mkdir /home/svn # svnadmin create --fs-type fsfs /home/svn/test_dev # chown nobody.nobody -R /home/svn/test_dev
anonymousは何もさせずに認証済みユーザーは読み書きOKにする
認証の設定は他のリポジトリでも使いまわすので別ファイルに書き出し
# vi /home/svn/test_dev/conf/svnserve.conf
anon-access = none auth-access = write password-db = /home/svn/.password-db
# vi /home/svn/.password-db
[users] user1 = hogehoge1 user2 = hogehoge2
リポジトリのURLは svn://192.168.0.3/test_dev
http://tortoisesvn.tigris.org/
クライアントに入れる
同じダウンロードページから日本語のLanguagePackをダウンロードして日本語化ができます
通常 trunk, branches, tags の3つのフォルダを作るらしい
クライアント側で test_dev フォルダを作成し、 svn://192.168.0.3/test_dev に対してチェックアウトを実行
trunk, branches, tags のフォルダを作成し、追加、コミット
一度 test_dev フォルダを削除し、再度 test_dev を作成
svn://192.168.0.3/test_dev/trunk に対してチェックアウトを実行
公開サーバを /home/test_dev とした場合
$ cd /home/test_dev $ svn --username user1 --password hogehoge1 checkout svn://127.0.0.1/test_dev/trunk ./
パーミッションの取り扱いに注意
$ cd /home/test_dev $ svn update
# vi /usr/local/apache2/conf/httpd.conf
<DirectoryMatch "\.svn"> Order allow,deny Deny from all Satisfy All </DirectoryMatch>
# /etc/rc.d/init.d/httpd graceful
こちらを参考に Subversion+Tracの使い方
$ svn update -r 100
インストーラーを再度実行し、Repairで再インストールして再起動してみよう。
移転元にてダンプ
# svnadmin dump /home/svn/test_dev > svn_test_dev.dump # gzip svn_test_dev.dump
移転先にてリストア
# gunzip svn_test_dev.dump.gz # svnadmin create --compatible-version 1.6 --fs-type fsfs /home/svn/test_dev # svnadmin load /home/svn/test_dev < svn_test_dev.dump # vi /home/svn/test_dev/conf/svnserve.conf # chown nobody.nobody -R /home/svn/test_dev
TortoiseSVNは右クリックのメニューから 再配置 を選択してURLを変更