astah*とGit

こんにちは。システム設計、UMLモデリングツールastah*プロダクトオーナーの山本です。
いつもありがとうございます。
先日、Javaの実行環境の変更や不具合修正を行ったastah* professional/UML/Viewerのバージョン8.1をリリースしました。詳しくはコチラをご覧ください。

今回は、astah*のプロジェクトファイルをGitリポジトリで管理する場合について書いてみたいと思います。


企画、開発、運用、保守、プロジェクトマネジメント等、プロジェクトを通して管理すべき成果物は多岐に渡ります。その中にastah*のプロジェクトファイルも含まれていると思います。これらの成果物のコミットや履歴の確認等のリポジトリに対する基本的な操作を統合的に扱うには、Sourcetree等の専用ツールを利用するのが妥当だと考えます。この時気になるのは、リビジョン間の差分をどう確認するかではないでしょうか。

astah*には、プロジェクトの比較機能というものがあります。これをコマンドラインから利用できるようになっていることはあまり知られていないかもしれません。
このastah-commandコマンドは、インストールフォルダに配置されています。下記のように、-diffオプションに、比較対象の2つのファイルを指定して実行すると、モデルの差分や図の差分を確認する画面が開くというものです。

astah-commandw.exe -diff file0.asta file1.asta

このコマンドを利用することでGitリポジトリで管理するastah*のプロジェクトファイルのリビジョン間の比較をすることが可能です。サンプルコマンド(Widowsバッチファイル)を作成してみましたのでご覧ください。
第1引数に比較のベースとなるコミットのハッシュ値、第2引数に比較対象のコミットのハッシュ値、第三引数に比較するファイルの名前を渡すインタフェースになっています。
同じ要領でシェルスクリプトも作成できます。

@echo off

rem ---------------------------------------------------------------------------
rem Usage:
rem  astah-git-diff base-revision target-revision filename
rem ---------------------------------------------------------------------------

rem astah*のインストールフォルダ
set ASTAH_DIR=C:\Program Files\astah-professional
rem リポジトリのパス
set REPOSITORY_DIR=C:\Users\m.yamamoto\workspace\repository\astah
rem ワーキングディレクトリ
set WORKING_DIR=C:\Users\m.yamamoto\workspace

pushd %~dp0

cd %REPOSITORY_DIR%
set BASE_FILE= "%WORKING_DIR%\%1_%3"
set REF_FILE= "%WORKING_DIR%\%2_%3"

rem 比較のベースとなるリビジョンを取得
git show  "%1":"%3" > %BASE_FILE%
rem 比較するリビジョンを取得
git show  "%2":"%3" > %REF_FILE%

rem astah*の比較コマンド実行
"%ASTAH_DIR%\astah-commandw.exe" -diff %BASE_FILE% %REF_FILE%

popd

ハッシュ値を確認するのが少々手間かもしれませんが、以下が実行例です。

> astah-git-diff.bat 0123 abcd file.asta

もう一つ、
Sourcetreeを使用して、編集中のファイルと編集前のリビジョンの差分を確認する方法もご紹介します。Sourcetreeのオプション設定から、外部DiffツールのDiffコマンドに、astah-commandへのパス(.exeではなく.batにしてください。Macではastah-command.sh)、引数に”-diff $LOCAL $REMOTE” を指定してください。

sourcetree

これでSourcetreeで、編集中のプロジェクトファイルのポップアップメニューから外部Diffを選択することで、プロジェクトの比較画面が表示されます。

astah-diff

いかかでしたか。
Gitに限らず、astah*のプロジェクトファイルをバージョン管理する場合のヒントとなれば幸いです。

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s