Tracは使いこなせないのでSubversionだけでやってみる

運用イメージはこんな感じ

svn.gif

インストール

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 フォルダが作業フォルダのトップだけに作成されるようになった! [smile] [heart]

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

TortoiseSVNのインストール

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

Apacheでアクセスできないようにする

# 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の使い方

バックアップ方法

http://d.hatena.ne.jp/pasela/20090206/svn_backup

特定のリビジョンに戻すには

$ svn update -r 100

Tips

TortoiseSVNをバージョンアップしたらアイコンがオーバーレイされなくなった

インストーラーを再度実行し、Repairで再インストールして再起動してみよう。


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS