Simulinkモデルのバージョン管理(3)

Simulinkモデルのバージョン管理(2)からの続きです。今回はテキストファイルのバージョン管理を行います。

分散型バージョン管理システムとして、MercurialベースのKilnを採用します。

やることは、次の5つです。

  • リポジトリを作る
  • リポジトリにファイルを保存する
  • コードレビューする
  • バージョンを戻したり、差分を見たりする
  • 複数の人が別々に行った変更を、統合する

システム構成の確認

今回は、次の構成にします。

中央サーバー Kiln + 開発PC

基本的にリポジトリはKilnで集中管理します。

一方、開発PCには分散リポジトリを置き、こまごました変更は分散リポジトリに対して行います。ここの変更がある程度形になった時点で、中央サーバーにどかっと上げることにします。

よって、登場するマシンは次の2台です。

  • 中央サーバー(Kiln)
  • 開発PC

以降の作業は、中央サーバーに対して行う作業と、開発PCに対して行う作業に分かれます。

このマークは、中央サーバーに対する作業を表します

このマークは、開発PC単体でも出来る作業を表します

リポジトリを作る

(中央サーバーに、任意のマシンのWebブラウザでアクセス)

Kilnに「プロジェクト」を作り、その中に「リポジトリ」を作成します。これはWebブラウザ経由で簡単にできます。

Kilnの画面:プロジェクト「SimulinkVersionControl」の中に、いくつかのリポジトリがある

それぞれのリポジトリは独立させておくこともできますし、お互いに履歴をコピーしたりすることもできます。

リポジトリにファイルを保存する

リポジトリにファイルを保存します。Simulinkモデルを変更した場合には、かならずリポジトリに保存するくせをつけます。

作業手順としては、中央サーバーから開発PCへリポジトリを取り出します。そして取り出したリポジトリに対してあれこれ作業します。

中央サーバーからリポジトリを取り出す

(中央サーバー、および開発PCを使用する)

リポジトリの取り出しは、開発PCから操作します。

Kiln用にカスタマイズされたTortoiseHGというツールを開発PCにインストールします。すると、次のようにするだけで済みます。

右クリックメニューで、TortoiseHGの Clone コマンドを実行

成功すると、リポジトリ内のファイルが、ごっそりと生成されます。

リポジトリ内のファイルが生成された

開発PC上のリポジトリにファイルを追加する

(開発PCのみ)

開発PCに取り出したリポジトリに対して、ファイルの追加を行います。

右クリックメニューで、TortoiseHGの Add Files コマンドを実行

TortoiseHGの Add Files コマンドを使用すると、どのファイルをリポジトリに追加するか?を指定できます。ここで指定したファイルはバージョン管理システムの管理下に置かれることになります。

追加されたファイルには、+ マークが付く

開発PC上のリポジトリに変更を保存する

(開発PCのみ)

ファイルを追加したり、ファイルを変更したりした場合は、その内容をリポジトリに保存する必要があります。

変更内容をリポジトリに保存

これもTortoiseHGのメニューから行います。

右クリックメニューで、TortoiseHGの HG Commit コマンドを実行

HG Commitを行う前は、次のような状態でした。

変更のあるファイルは ! マーク、追加されたファイルは + マークが付く

HG Commitを行うと、次のようになります。

変更のない(=最新状態である)ファイルは チェックマークが付く

中央サーバーに変更を保存する

(中央サーバー、および開発PCを使用する)

開発PC上のリポジトリに保存したものが、ある程度の形になったところで、その内容を中央サーバーに保存しておきましょう。

TortoiseHGのSynchrinozeメニューをクリックし、現れた画面でPushをクリックします。これだけです。

TortoiseHGの、Synchronizeコマンド

Synchronize画面で、Push を実行

この作業の結果、開発PC上で行われた変更が、中央サーバーに伝達されました。Kilnの画面には、次のように履歴が現れます。

Kilnのリポジトリ情報ページに、開発PC上で行われた履歴が表示される

まとめ

今回は、リポジトリの作成から、ごくごく基本的な管理までを扱いました。

こういった作業を行うだけで、ファイルの変更履歴はすべてリポジトリ内に保存されます。その結果として、ファイルをうっかり変更してしまいもとに戻せない!といった悲劇を防ぐことができます。