1.Eclipse(Galileo)にSubversionプラグインインストール
EclipseでSubversionを使用するためのプラグインはSubclipseとSubversiveがある。eclipse.orgの正式プロジェクト、sshに対応しているという理由でSubversiveを使うことにした。
Subversiveで使用するSubversion クライアントは、SVNKitとJavaHLがある。違いは以下の通り。
- SVNKit:Pure Java
- JavaHL:JNIを使用
どっちがよいかは分からないのでとりあえず両方インストールしておく。
・JavaHL用のJavaBindingインストール
$ sudo port install subversion-javahlbindings
・SVN Team Providerのインストール(Help->Install new software->add)
http://ftp.yz.yamagata-u.ac.jp/pub/eclipse/technology/subversive/0.7/update-site/
・Subversive SVN Connectors、SVNKit Implementationのインストール(Help->Install new software->add)
http://www.polarion.org/projects/subversive/download/eclipse/2.0/update-site/
MacなのでJavaHL win32 binaries のチェックは外す(最初の画面。次の画面で外すと完了できない??)。
とりあえずSVN ClientはSVNKitを使用することにする(Preferences->Team->SVN->SVN Clientで設定できる)。
2.サーバ(debian lenny)にSubversionインストール
サーバ(debian lenny)にSubversionをインストール。
# aptitude install subversion
3.HTTPS経由でSubversion使用
まずは、HTTPS経由で接続できるよう設定。
・Apacheの設定
# a2enmod ssl
# aptitude install ssl-cert
# make-ssl-cert generate-default-snakeoil --force-overwrite
# a2enmod ssl
# a2ensite default-ssl
# /etc/init.d/apache2 restart
秘密鍵・公開鍵はとりあえずデフォルトのものを使用
- 秘密鍵:/etc/ssl/private/ssl-cert-snakeoil.key
- 公開鍵:/etc/ssl/certs/ssl-cert-snakeoil.pem
・HTTPS経由でのSubversion使用
# aptitude install libapache2-svn libapache2-mod-encoding
#cat /etc/apache2/mods-available/dav_svn.conf
<Location /projects/svn>
DAV svn
SVNListParentPath on
SVNParentPath /var/lib/svn
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /etc/apache2/dav_svn.passwd
Require valid-user
</Location>
# a2enmod auth_basic authn_file
・hogepageユーザを作成し、testリポジトリを作成。
作成したリポジトリはapacheの動作グループであるwww-dataでchownする。
# htpasswd -c /etc/apache2/dav_svn.passwd hogepage
# mkdir /var/lib/svn
# chown www-data /var/lib/svn
# svnadmin create /var/lib/svn/test
# chown -R www-data /var/lib/svn/test
後はEclipse上のプロジェクトを右クリックして、Team->Share ProjectでSVNの設定を行う。
接続先URLは 「https://hostname/projects/svn/test/」のように設定した。
4.SSH経由でのSubversion使用
SubversionをSSH経由で使用する場合の設定。
複数ユーザでの使用となるのでディレクトリにsetgidを行う。
setgidすることで、このディレクトリ以下に作られるファイルやディレクトリはsvnusersグループで作成される。またsetgidビットも継承する。書き込み権限などは継承されないのでumaskで調整。
※ディレクトリへのsetgidについてはここを参照。
・グループ追加
# addgroup svnusers
・svnusersグループにhogepageを追加
# usermod -G svnusers hogepage
・ /var/lib/svnのグループをsvnusers に変更し、setguidする。
# chown :svnusers /var/lib/svn
# chmod g+sw /var/lib/svn
・リポジトリ作成
# svnadmin create /var/lib/svn/test2
・ test2のgroupがsvnusersになっていることを確認。
# ls -la /var/lib/svn/
drwxr-sr-x 6 root svnusers 4096 2009-11-09 21:40 test2
・dbの内容をグループのユーザが変更できるよう権限変更
# cd /var/lib/svn/test2
# find db/ -perm +200 -exec chmod g+w {} ¥;
・svnserveからのファイル作成時にグループの書き込み許可を付加。
# cd /usr/bin
# mv svnserve svnserve.org
# cat svnserve
------------------------
#!/bin/sh
umask 002
/usr/bin/svnserve.org "$@"
------------------------
# chmod 755 svnserve
Eclipse上のプロジェクトを右クリックして、Team->Share ProjectでSVNの設定。
General
URL: svn+ssh://hostname/var/lib/svn/test2
Authentication->User: hogepage
SSH Settings(公開鍵認証)
private key: /Users/hogepage/.ssh/id_rsa