開発環境の設定関連(続き)
前回の設定からの続き。
おさらいとしては、
- Subversionはリポジトリごとにリビジョンが更新される。
- つまりプロジェクトごとにリポジトリを作成しないとリビジョン管理が大変。
Subversionにsvn+sshで接続する前提でリポジトリ作成
と言う事で、リポジトリ作成の方法を前回から以下のように変更した。
面倒くさいので、簡単なシェルスクリプトを作成。
#!/bin/bash 〜余計なものは省略〜 REPOS_NAME=./$1 # make repository mkdir $REPOS_NAME svnadmin create --fs-type fsfs $PWD/$REPOS_NAME # make management dir # mkdir -p $REPOS_NAME/branches # mkdir -p $REPOS_NAME/tags # mkdir -p $REPOS_NAME/trunk # change authority chgrp -R svn $REPOS_NAME chmod -R 770 $REPOS_NAME chmod g+s $REPOS_NAME/db
- リポジトリのディレクトリとファイルのグループをsvn用のグループに変更し、そのグループにアクセス権限を付与する。
- リポジトリのdbディレクトリにグループのSGIDを設定する。
- svnserveをあらかじめ起動する必要がない。
- svn接続の場合は、inetdなどを利用してあらかじめ起動する必要がある。
- Subversionが「-t(トンネル)」オプションを使ってsvnserveを起動してくれるらしい。
- ssh経由の場合、認証はLinux(Unix)のアカウント情報を利用する。
と言った感じ。
Subclipseからsvn+sshで接続してみる。
URLの設定は、以下の通り。
svn+ssh://ユーザ名@ホスト名/usr/local/svnrepos/<リポジトリ名(プロジェクト名)>
で、実行して見る。
・・・エラー発生。
ロケーション検証中にエラー:"org.tigris.subversion.javahl.ClientException:文字化けxx:svn: Can't create tunnel"
だそうです。
ちょこっと調べて、Eclipse(Subclipse)の設定で
ウィンドウ>設定>チーム>SVN>SVNインターフェース
で「javaSVN(Pure Java)」を選択し適用する。
それから、再度実行。
そしたら「SSH証明書の入力」画面がでてきた。
イントラなので、パスワード認証を使うって事で・・・、設定完了。
ユーザ名もこの画面で設定できるので、もしかするとURLにユーザ名はいらないかも・・・
svn+ssh://ホスト名/usr/local/svnrepos/<リポジトリ名(プロジェクト名)>
って感じでURLを設定しても同じようにできましたが、どっちが正しいのやら・・・。
<追記>
後者のやり方でできました。はじめから後者(ユーザ名なし)でやった場合でも「SSH証明書の入力」画面がでてきて、ユーザ名とパスワードが設定できる。
ただし後者の場合、パスワード認証であることが条件らしい。
証明書による認証を行う場合、Windowsの場合PuTTYを使ってパスワード認証をするらしい。その場合には「ユーザ名@ホスト名」とするらしい。ただしホスト名のところはPuTTYの設定名になるらしい。(やってないのでよくわからんが・・・。)
プロジェクトを登録してみる
リポジトリごとに「trunk」「tags」「branches」と作って管理すると良い(らしい)。
trunk
まずEclipseからプロジェクトの共有をする。
そのとき上記で作成したリポジトリ・ロケーションを指定する。
そしてコピー先のURLを「リポジトリルート/trunk」として登録する。
ようはプロジェクト名をtrunkにして登録するイメージ。
(「リポジトリルート/trunk/WEB-INF」みたいなイメージ。)
tags
EclipseのSVNリポジトリ・エクスプローラにて、該当リポジトリ・ロケーションを選択。
右クリックで「新規>リモート・フォルダ新規作成」で「tags」ディレクトリを作成。
「trunk」を選択して右クリックで「ブランチ/タグ」を選択して、コピー先のURLで「tags/バージョン」みたいな感じでタグを作成する。
branches
上記tagsの「tags」を「branches」に変えればOK。
つまりtagsとbranchesの違いは、開発者(利用者)が意識しないと何もない。
なんでこんなこと書いたかと言うと、サーバ側でリポジトリを作成したときに「trunk」「tags」「branches」をmkdirしていたら、Subclipseの設定でエラーになったため。
なので上記リポジトリ作成用のシェルスクリプトは、以下のようにコメントアウトしてある。
# make management dir # mkdir -p $REPOS_NAME/branches # mkdir -p $REPOS_NAME/tags # mkdir -p $REPOS_NAME/trunk
これらのディレクトリは、リポジトリルートのLinux(Unix)ディレクトリにできるわけではなく、リポジトリ(BDB、FSFS)にできるため見えないみたい。