PizzaFactoryによるCVS操作

PizzaFactoryは、もなみソフトウェアによる組み込み向け開発環境で、Eclipseをベースにしています。フリーでダウンロードできるお試し(Express)版もあります。以下では、PizzaFactory 3.1.1 Express版で、TOPPERS/JSP for CORTEX-M3プロジェクトのソース・ツリーをCVSから取得、編集、反映する方法を説明します。 ドキュメント作成は2008年6月です。

設定

SSH接続の設定

Sourceforgeは開発者用のCVSデータ通信をSSHで暗号化しています。したがって、PizzaFactoryでCVSクライアントの設定を行う前に、SSHの設定を行われなければなりません。 SSH接続を行うには、最初に接続そのものの設定を行います。その手順は

  1. メニューバーからWindow->Preferencesを選ぶ
  2. 左のツリーからTeam->CVS->Ext Connection Methodを選び、"Use another connection method type to connect"を選ぶ
  3. Connection type : "extssh"を選ぶ

です(図1)。この設定は最初に参考にしたnyxのドキュメントの設定とは異なります(その後調べたところでは、nyxのドキュメントはEclipse 3.2、PizzaFactoryはEclipse 3.1.1であることが原因のようです)。前の設定でも動いたのですが、あとから考え直すとこちらのほうが自然に感じます。SSHはバッドノウハウだらけで、正直よくわかりません。

100connectionmethod.png
図1 接続方法の設定

接続方法を指定したら、次はRSA暗号を生成します。

RSA暗号を生成するには

  1. Preferencesダイアログの左のツリーからTeam->CVS->SSH2 Connection Methodを選び、"Use another connection method type to connect"を選ぶ
  2. Key Managementタブを選び、Generate RSA Key... をクリックしてRSA暗号鍵を生成する
  3. Passphraseを登録する。これは、PizzaFactoryがRSA暗号を使うときに聞かれる。コンピュータが盗まれたときの対策。
  4. Save Private Key ボタンをクリックして、暗号鍵を保存する。
  5. ダイアログ中央の"You can paste this public key ... " テキスト・ボックスに表示される暗号鍵をコピーする

という手続きを踏みます(図2)。これで、使用しているコンピュータにRSA暗号鍵が設定され、PizzaFacotryから使えるようになりました。

101ssh2connectionmethod.png
図2 RSA暗号鍵の生成と保存

Sourceforgeアカウントの設定

CVSをSSH暗号で保護するには、PizzaFacotryでSSHを設定するだけではだめです。Sourceforge側にもSSHの設定が必要です。この設定は、暗号鍵の登録だけで済みます。

まず、Sourceforgeにログインし、アカウント管理ページに進みます。そして、ページ下部の鍵の編集をクリックします(図3)。すると、鍵の入力画面に移りますので、 上のステップでつくり、コピーした暗号鍵をここに貼り付けます。仮に複数の鍵を登録する場合には、1行に鍵を1つだけにしてください。 登録は以上で終了です。

102sourceforge.png
図3 sourceforgeアカウントへの暗号鍵の登録

CVSリポジトリからTOPPERS/JSPのソース・ツリーを取得する

PizzaFactoryとSourceforgeの両方でSSH暗号通信の準備ができたら、いよいよCVSからソース・ツリーを取り出します。TOPPERS/JSP for CORTEX-M3プロジェクトのソース・ツリーは、ARM版のテストビルド、Cygwinでのmakeのためのパッチが当てられているため、簡単にビルド環境の構築ができます。

PizzaFactoryを起動すると最初にワークスペースの選択を聞いてきますので、適当な場所を指示します(図4)。ワークスペースは後でもう一度正しいものを指定するので、ここではデフォルトでかまいません。

00selectws.png
図4 ワークスペースの選択

次に

  1. メニューバーから File -> Import... を選ぶ
  2. プロジェクトのインポート元を聞いてくるので、"Projects from CVS"を選ぶ

操作を行い、プロジェクトをCVSからとってくるよう指示します(図5)。

設定が終わったら"Next"をクリックします。

01importfromcvs.png
図5 CVSからプロジェクトを取得することを指示

すると、CVSサーバーの情報を聞いてきますので、

  • Hostは cvs.sourceforge.jp
  • Repositry Pathは /cvsroot/jsp4cm3
  • Userは、 Sourceforgeのアカウント名
  • Connection Typeは extssh

を指定します(図5)。なお、nyxのドキュメントでは、Connection Typeは extが指定されています。extsshでうまくいかないならextを試してみてください。

設定が終わったら"Next"をクリックします。

02repositlylocation.png
図6 リポジトリ情報の設定

次に進むと、PizzaFactoryがSSH暗号で保護された通信を開始します。ここで、先ほど入力したRSA暗号のパスフレーズを聞かれるので、答えてやります(図7)。

03checkout fromCVS.png
図7 リポジトリからモジュール情報を取り出す

正しい暗号を与えると、CVSサーバーのリポジトリにあるモジュール(ソースツリー)の一覧が表示されます。"jsp"を選んで"Next"をクリックしてください(図8)。

04selectmodule.png
図8 モジュール"jsp"を選択

次にチェックアウトの方法を聞かれます。

チェックアウトとはソースツリーの「持ち出し」です。ここでは"Checkout as project in a workspace"、つまり、ワークスペース内のプロジェクトとしてソースツリーを取得します(図9)。

設定が終わったら"Next"をクリックします。

05checkoutas.png
図9 モジュールをプロジェクトとしてチェックアウト

プロジェクトとして取り出すと指定したので、今度はそのプロジェクトの格納ワークスペースを聞かれます。

ワークスペースはただのディレクトリです。事前に下ごしらえをする必要はありません。デフォルトでもかまいませんが、Cygwinのホーム・ディレクトリを指定すると便利でしょう。私のホームディレクトリは /home/suikan です。これはPizzaFactoryには C:\cygwin\home\suikan と指定します(図10)。CygwinのディレクトリとWindowsのディレクトリの対応は、Cygwinをどこにインストールするかで変わります。あらかじめ調べておきましょう。

設定が終わったら"Next"をクリックします。

06selectlocation.png
図10 プロジェクトを作るワークスペース

最後に、リポジトリの中のどのバージョンのソースツリーを取り出すかを聞かれます。

ここではHEADを指定します。HEADはソースツリーの最新版をあらわします。

"Finish"をクリックすると、ソースツリーの取得が始まります。回線にもよりますが2,3分とかからず全ソースの取得が完了します。

07selecttag.png
図11 取り出したいコードのCVSタグとして"HEAD"を指定

ソースの取得が終わると、左側のビューにソースツリーが表示されます(図12)。ビューがない場合にはメニューからWindow -> Show View -> C/C++ Projects を選んでください。ビューが表示されます。

103panel.png
図12 ローカルPCのCVSビュー

CVSによるソースのバージョン管理

リポジトリから最新のソースを取得する(update)

一日の作業の初めに、必ずリポジトリから最新のソースを取得しましょう。前のステップで、プロジェクトとCVSリポジトリの間の関係が設定されているため、以後はプロジェクトを開くだけでCVS操作の準備ができています。

ツリーの希望のファイルをクリックし、コンテキスト・メニューからTeam -> Updateを実行します。ローカルPCにあるファイルがリポジトリの最新バージョンで置き換えられます。

ファイルではなく、フォルダをクリックしてメニューを実行すると、フォルダ以下が最新のファイルで置き換えられます。

ソースを編集する

ソースの編集は簡単です。

ビューのアイコンをダブルクリックしてファイルを開き、編集してください。保存すれば作業は終わりです。

ローカルのファイルを編集して変更を加えると、ファイル名の前に">"が表示されます。

編集したソースをリポジトリに反映する(commit)

編集したファイルは、なるべく早くテストして、正しく修正されたことを確認した後にcommitしましょう。Commitとは、編集結果をリポジトリに反映する作業です。

Commitをかけるには、ツリーの中の、変更をかけたファイルをクリックし、コンテキスト・メニューからTeam -> Commitを実行します。ローカルPCにあるファイルがCVSリポジトリに送られます。

ファイルではなく、フォルダをクリックしてメニューを実行すると、フォルダ以下の編集済みファイルがCVSのリポジトリに送られます。

CommitをかけるとPizzaFactoryからコメントを入力するよう求められます。このコメントは必ず残してください。コメント内容は、チームメンバーに対して「なぜ、どのような変更を行ったか」明確に伝わるようなものをお願いします。

編集結果を廃棄して、リポジトリの最新の版にあわせる

編集はしたものの、結果が思うようなものではなく、元に戻したいと思うこともあります。そんな場合はCVSから最新版を盛ってくれば回復できます。

編集結果を破棄するには、ツリーの中の、変更をかけたファイルをクリックし、コンテキスト・メニューからReplace with -> Latest from HEADを実行します。ローカルPCにある編集結果が破棄され、CVSリポジトリのHEADで置き換えられます。

ファイルではなく、フォルダをクリックしてメニューを実行すると、フォルダ以下のファイルがHEADで置き換えられます。

古い版と現在のファイルの比較をする

自分が持っている最新のファイルと、CVSのリポジトリにある過去の版の比較をすることができます。

比較をするには、ツリーの中の、希望するファイルをクリックし、コンテキスト・メニューからCompare with -> Histroy...を実行します。すると、図13のようなHisotryビューが現れます。

Historyビューには、これまでcommitされた各版について、commit日時、commitした人、コメントが表示されます。このコメントを見ることで、いつ、どのような変更がなされたかわかるため、commit時のコメントは非常に重要です。

104historyview.png
図13 Hisotryビュー

どの版と比較したいか決まったら、その版をダブルクリックします。すると、エディタがCompare状態で開きます(図14)。

この状態では、左右のペインに二つの版が並べられ、双方が同期してスクロールします。スクロールバーの右横に小さな四角が点在していますが、これがファイル中の相違のある場所で、クリックすると画面上に選択状態で表示されます。

105compare.png
図14 Compare状態のエディタ

リポジトリの過去の特定の版をもってくる

まれに、CVSリポジトリのHEAD(最新版)ではなく、過去の版を使って作業したいことがあります。

過去の版を取得するにはファイルをクリックし、コンテキスト・メニューから Replace with -> History... を実行します。すると、Historyビューが現れますので、必要な版をクリックし、コンテキストメニューから Get Contents を実行します(図16)。

106getcontent.png
図16 Hisotryビュー

Get Contentsを実行後も、ファイル名横のバージョン番号はかわらず、編集中を表す">"が名前の前にくるだけです。取得した古い版のバージョン番号は表示されません。これは、最新のファイルに古い版をコピー&ペーストしたということです。

古い版で作業したあと、その結果をcommitする場合は、よく考えてからにしてください。古い版で作業するのは、単なる確認のことが多く、commitをしなければならないかどうかは、別の話です。

新しく作ったファイルをリポジトリに追加する(add)

プロジェクトに新しいファイルを追加したくなることがあります。

新しいファイルをCVSのリポジトリに追加するにはファイルをクリックし、コンテキスト・メニューから Team -> Add to Version Control を実行します。これでCVSへ追加可能になりました。本当に追加するには commit を行います。

ファイルをCVSのリポジトリに追加する前に、開発チームの他のメンバと話し合うことを強くお勧めします。CVSはうっかり追加したファイルでも永久削除できないため、取り返しがつかないのです。

各版での変更点を閲覧する

タグを打つ