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

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

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

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

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

システム構成の確認

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

![](/images/blog100401_01.png "blog100401_01")_中央サーバー Kiln + 開発PC_

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

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

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

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

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

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

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

リポジトリを作る

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

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

![](/images/blog100401_02.png "blog100401_02")_Kilnの画面:プロジェクト「SimulinkVersionControl」の中に、いくつかのリポジトリがある_

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

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

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

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

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

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

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

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

![](/images/blog100401_04.png "blog100401_04")_右クリックメニューで、TortoiseHGの Clone コマンドを実行_

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

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

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

(開発PCのみ)

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

![](/images/blog100401_05.png "blog100401_05")_右クリックメニューで、TortoiseHGの Add Files コマンドを実行_

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

![](/images/blog100401_10.png "blog100401_10")_追加されたファイルには、+ マークが付く_

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

(開発PCのみ)

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

![](/images/blog100401_06.png "blog100401_06")_変更内容をリポジトリに保存_

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

![](/images/blog100401_07.png "blog100401_07")_右クリックメニューで、TortoiseHGの HG Commit コマンドを実行_

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

![](/images/blog100401_11.png "blog100401_11")_変更のあるファイルは ! マーク、追加されたファイルは + マークが付く_

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

![](/images/blog100401_12.png "blog100401_12")_変更のない(=最新状態である)ファイルは チェックマークが付く_

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

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

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

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

![](/images/blog100401_14.png "blog100401_14")_TortoiseHGの、Synchronizeコマンド_

_Synchronize画面で、Push を実行_

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

![](/images/blog100401_15.png "blog100401_15")_Kilnのリポジトリ情報ページに、開発PC上で行われた履歴が表示される_

まとめ

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

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