EclipseとSubversionを接続し、作成してきたプロジェクトのソースをサーバー上のリポジトリにインポートするまでをレポートします。
Subversion+Tracに関する投稿、およびPHP開発環境に関する投稿からだいぶ経ちましたが。。。
はじめに
今までWindows PC上でPHPのプログラムを書いていましたが、ようやくリポジトリーにコミットすることにしました。
TurtoiseSVNでコミットしてもよいのですが、EclipseのSubversion連携機能を使ってみようと思います。
サーバー側へのSubversionのインストールと設定に関しては、「エックスサーバーにSubversionをインストールする」および「エックスサーバーにTracをインストールする」に、レンタルサーバーにインストールする場合のレポートを書きました。しかし通常のLinuxなどの管理者の方の場合は、パッケージ管理ツールで簡単にインストールできると思います。
前提条件
本稿は「「Pleiades All in One」のインストール」に記載した通りに設定しました、以下の環境を対象に記載しております。各ソフトウェアのバージョンが異なる場合は動作が異なると思いますのでご留意ください。
- OS:Windows7 64bit
- 環境:Pleiades All in One、Eclipse 4.3 Kepler、PHPパッケージ(以降、Pleiades PHP)
- Eclipse Platform Version: 4.3.0(C:\pleiades\eclipse\eclipse.exe)
またサーバー側には既にリポジトリーが作成されていて、初期ディレクトリとして、trunk, branches, tagsがインポートされている状態よりスタートします。
インストール済モジュールの確認
Eclipseを起動し、メインメニューより「ヘルプ>Eclipseプラットフォームについて」を選択し、「Eclipseプラットフォームについて」ダイアログを表示します。
下の「インストール詳細」をクリックすると、インストールされているモジュールが確認できます。
今回のテーマに必要なモジュールは以上です。
Pleiades PHPはインストール済ですので、私は上記のインストール作業はしていません。(SVNKitについては、後述の通り新しいバージョンをインストールしました。)
ですので、もし「Subversive コネクター」、「Subversive チーム・プロバイダー」がインストールされていない場合は、他サイトをご参照し、インストールして下さい。
SVNコネクターの確認とインストール
Pleiades PHPにはSVNKitがインストール済みです。しかし後々互換性が原因の不具合で悩むのは嫌なので、最初にバージョンを確認し、サーバーのSubversionとバージョンを合わせることにしました。
SVNコネクターの確認
上部メニューより「ウィンドウ>設定」を選択し、設定ダイアログを開きます。
左メニューより「チーム>SVN」を選択し、右ペインより「SVNコネクター」タブを開きます。するとSVNコネクターに「SVNKit 1.7.9 (中略) SVN 1.7.9 compatible」が選択されています。
私の環境のサーバー側のSVNはversion 1.8.4です。そこで、新しいバージョンのコネクターをインストールすることにしました。
SVNKitのインストール
設定ダイアログを閉じた後に、メニューより「ヘルプ>新規ソフトウェアのインストール」を選択し、インストールダイアログを開きます。
作業対象に、「http://community.polarion.com/projects/subversive/download/eclipse/3.0/kepler-site/」を入力します。Pleiades PHPでは、プルダウンから「Update Site」として選択出来ます。
その下のリストより「Subversive SVNコネクター」を展開すると、「SVNKit1.8.3」というのがありました。これを選択し、また後々不整合で悩みそうな予感がするので、「Subversive SVN コネクター」も選択しました。
「次へ」をクリックすると、依存関係の処理が走ります。
確認が表示されます。Subversive SVN コネクターは既にインストールされているので、アップデートが実行されるようです。(選択しなかったとしても、依存関係を自動で解決してくれそうですね。)
「次へ」をクリックします。
ライセンスを確認し、「同意します」にチェックして「完了」をクリックします。
その後、署名なしのモジュールをインストールする旨、Eclipseを再起動する旨のダイアログが表示されますので、適当にクリックしてEclipseを再起動します。
そして再びメニューの「ウィンドウ>設定」より設定ダイアログを開き、「チーム>SVN」、「SVNコネクター」タブを選択します。
「SVNコネクター」にSVNKit 1.8.3が選択できるようになりましたので、これを選択し下方の「適用」をクリックします。
「SVN 1.8.1 compatible」ですが、それ以外よりは近いでしょう。
秘密鍵の変換
本章ではEclipseのSVNコネクターでSSH接続するのに必要な、秘密鍵の変換についてレポートします。HTTP接続する方は必要ありませんのでスキップして下さい。
私の場合、サーバーはレンタルサーバー(エックスサーバー)であり、インストールしたSubversionへのアクセスはSSH接続でしかできません。EclipseのSVNコネクターによるSSH接続に必要な、秘密鍵の形式はOpenSSH形式らしいので、この形式に秘密鍵を変換します。
(Poderosa、TortoiseSVN、Eclipseと、それぞれフォーマットが違うのは案外めんどうですね。)
puttygenのダウンロード
鍵ファイルの変換には「エックスサーバーにSubversionをインストールする」で紹介しました、puttygenを利用します。
PuTTY Download Pageをブラウザで開き、「For Windows on Intel x86」のセクションに、「PuTTYgen:」という行がありますので、その右の「puttygen.exe」をクリックしてダウンロードします。
鍵ファイルの変換
puttygenを起動します。
「load」をクリックし、秘密鍵ファイルを指定します。そのあとパスフレーズを聞かれるので、入力すると秘密鍵ファイルが読み込まれます。
メニューより「Conversions>Export OpenSSH key」を選択します。するとファイル保存のダイアログが開くので、適当な名前をつけて保存します。
秘密鍵ファイルの変換は以上です。
EclipseからSubversionに接続する
では、いよいよEclipseを操作してSubversionに接続してみます。
SVN パースペクティブ
Subversionのリポジトリーを見ることができる、「SVN リポジトリー・エクスプローラー」パースペクティブ(以下、SVNパースペクティブ)があるので、それを開きます。
Eclipseの右上にある(パースペクティブを開く)をクリックします。
「パースペクティブを開く」ダイアログが開くので、リストより「SVNリポジトリー・エクスプローラー」を選択した後に「OK」をクリックします。すると以下の様な画面が表示されます。
サーバーへの接続
画面左の「SVNリポジトリー」ビューを使って、サーバーに接続します。
「SVNリポジトリー」ビューの上部にある(新規リポジトリー・ロケーション)をクリックします。すると「新規リポジトリー・ロケーション」ダイアログが表示されます。
「一般」タブが選択されている状態で、URLにリポジトリーのURL、認証のユーザー名を入力します。またお好みで「カスタム・ラベルを使用する」にチェックし、適当なラベルを入力します。
(普通にHTTPで接続する場合は、パスワードも入力します。そして以降のSSHの設定は必要ありません。)
私の場合はサーバーにSSH接続するので、URLは「svn+ssh://(ホスト名)/(リポジトリーまでのフルパス)」に、「ユーザー名」はSSH接続するときのユーザー名になります。さらに「SSH設定」タブをクリックします。
ポートに適切なポートを指定し、認証に秘密鍵を選択した後に、OpenSSH形式の秘密鍵へのファイルへのパスと、パスフレーズを入力します。またお好みで「パスフレーズを保管」にもチェックします。
私の場合は、ポートはエックスサーバーのSSHのポートである10022に、秘密鍵のファイルは先ほど作成した秘密鍵へのパスになります。
「完了」をクリックすると、接続が始まります。接続ができない場合は、ダイアログが表示されますので、インストラクションに従って接続情報を修正します。
接続に成功すると画面は以下のようになります。
左の「SVNリポジトリー」ビューと、下の「SVNリポジトリ・ブラウザ」ビューに、あらかじめ作成しておいたtrunk、branches、tagsが表示されています。
プロジェクトのインポート
次に、プロジェクトをリポジトリーにインポートします。
画面右上のアイコンをクリックして、PHPパースペクティブに戻ります。
PHPエクスプローラーからプロジェクトを右クリックし、表示されるメニューより「チーム>プロジェクトの共用」を選択します。
「プロジェクトの共用」ウィザードが開きます。「SVN」が選択された状態で「次へ」をクリックします。
「既存のリポジトリー…」が選択されており、先ほど接続したリポジトリーが選択されている状態で「次へ」をクリックします。
プロジェクトがインポートされるURLを確認します。
「シンプル・モード」のURLが気に入らなかったので、「拡張モード」を選択しました。最下部のURLが適当になるようチェックを調整し、trunk以下に現在のプロジェクトディレクトリ以下が展開されるようにしました。(単に「シンプル・モード」でURLを修正すれば良いのかもしれません。)
「次へ」をクリックします。
コメントを修正して「完了」をクリックします。(このコメントがどこに反映されたのかは不明です。そのままで良いかもしれません。)
「コミット」ダイアログが表示されますので、コメントを入力し、リストよりコミットするディレクトリおよびファイルを選択します。
「OK」をクリックし、しばらくするとコミットが終了します。
PHPエクスプローラーを見ると、ディレクトリやファイルの後ろにリビジョン番号が表示されています。
SVNパースペクティブのSVNリポジトリービューを見ると、企図どおりにディレクトリが作成されたのが確認できました。
またTracを見てみると、こちらでもソースがコミットされたことが確認できます。
まとめ
EclipseからSubversionに現在のプロジェクトをインポートし、Trac上でリポジトリーを確認することが出来ました。
TortoiseSVNでは、PCからリポジトリーへインポートした後、リポジトリーからPCへエクスポートするような使い方をしていましたので、便利かもしれません。(単に私がTotoiseSVNの使い方を間違っていた可能性も高いです。^^;)
Subversion+Tracのプロジェクトを簡単に作成するツールも作っているのですが、未だ公開可能なレベルではありません。(実はこの項を書きながら、ツールをデバックして、そのツールをサーバーにあげてリポジトリーを作り直し、そしてそのツールが含まれているプロジェクトをコミットする、という鶏と卵を同時にやっています。)
まあ、そのうち、できたら公開致します。