EclipseでSubversionを行う方法

2010年4月30日

EclipseでSubversionを行う方法

Eclipse+Subclipseを利用する。
Subclipseはウィンドウ→ソフトウェア更新→サイトの追加
http://subclipse.tigris.org/update
を登録。
これでインストール可能になる。

インストール後はパースペクティブに「SVNレポジトリ」が追加されるのを確認すること。

puTTYごった煮 インストール
TortoiseSVN インストール

puTTYのpuTTYgenで鍵を作成。公開鍵をSubversionのレポジトリがあるサーバーのログイン情報の
.ssh/authorized_keys
に記述。権限は600。

鍵を作ったら、必ずpuTTYで1回アクセスしてみること。
そうしないと正常にいかないと思われる。

SubcliseやTortoiseSVNで利用する場合、SSHのポートが違ったりするとうまくいかない。
これはSubversionのconfigでトンネルを新たに作ることで可能になる。

これは
C:\Documents and Settings\あなたのアカウント\Application Data\Subversion\config
で記述すればOK。

[tunnels]
の項目に

sakura1 = “C:\\Program Files\\TortoiseSVN\\bin\\TortoisePlink.exe" -ssh -l アカウント -P 22 -i “C:\\Documents and Settings\\あなたのアカウント\\My Documents\\svntest.ppk"

という風に書く。バックスラッシュは2つ入れないとどうもうまくいかない。

EclipseやTortoiseSVN上からSubversionのレポジトリにアクセスしようとすると、
毎回パスワードを聞かれるので、
puTTYごった煮版のpagentを起動し、鍵を登録しておけば、パスワードは聞かれなくなる。

Subversionサーバーがいくつか存在している場合は、その情報をtunnelsに登録しておけば大丈夫。

Eclipseにおいて、
SVNリポジトリ
で新規のリポジトリをインポートして、チェックアウトでプロジェクトを指定すれば、
プロジェクトとして編集することが可能になる。
commitする場合は、プロジェクト上で右クリックして
チーム→コミット
とすればよい。

Eclipseからのcommit後は、即サイトに反映した方が『一人で』開発している場合に楽。
その場合
/home/アカウント/svn/(レポジトリ)/hooks/post-commit

LANG=ja_JP.UTF=8
/usr/bin/svn update /home/アカウント/svnsite/* >> /dev/null 2>&1
というような記述をしてあげて、
/home/アカウント/svnsite/*
がすぐに反映されるようにする。
post-commitは実行権限を付与すること。

これだと、svn updateだけでは所有者が全て変わってしまうので

/home/アカウント/

svn/eccube
レポジトリ

svnsite/test
チェックアウトしたSubversion用ファイル群

test2
実際に公開されるサイト

というものを用意し、post-commitでは

#!/bin/sh
SVN_DIR=/home/アカウント/svnsite/test/
FROM_DIR=$SVN_DIR
TO_DIR=/home/アカウント/test2/

## svn update
cd $SVN_DIR
/usr/bin/svn update $SVN_DIR* >> /dev/null 2>&1
cd –

/usr/bin/rsync –dry-run –delete –checksum –archive –recursive –verbose –exclude '.svn’ $FROM_DIR $TO_DIR

answer=$1

if [ “$answer" = “-y" ];
then
answer="y"
else
echo -n “rsync ok? [y/n]"
read answer
fi

if [ $answer = “y" ];
then

/usr/bin/rsync –checksum –recursive –verbose –exclude '.svn’ $FROM_DIR $TO_DIR

fi

というスクリプトを実行させるようにする。
rsyncで–archiveをすると、svnsite/testの権限がコピーされてしまうので、これははずす。