こんにちは。UMLモデリングツールastah*のプロダクトオーナー山本です。
今回は、astah*のプロジェクトファイルをGitで管理する場合に、コミットハッシュ値を指定するだけで差分を確認できる方法について書いてみたいと思います。
- 任意のバージョンのファイルを比較する方法
- SourceTreeを使用して比較する方法
プロジェクトを通して構成管理すべき成果物は企画、開発、運用、保守、プロジェクトマネジメントを通して多岐に渡ります。その中にastah*のプロジェクトファイルも含まれていると思います。これらの異なる種類の成果物についてGitで統合的に扱うには、Sourcetree等の専用ツールを利用するのが妥当だと考えます。この時気になるのは、リビジョン間の差分をどう確認するかではないでしょうか。
astah*には、プロジェクトの比較機能というものがあります。これをコマンドラインから利用できるようになっていることはあまり知られていないかもしれません。このコマンドは、インストールフォルダに配置されています。
下記のように、-diffオプションに、比較対象の2つのファイルを指定して実行すると、モデルの差分や図の差分を確認する画面が開くというものです。
astah-commandw.exe -diff file0.asta file1.asta
このコマンドを利用することでGitリポジトリで管理するリビジョン間のastah*ファイルを比較することができます。
サンプルコマンドを作成してみましたのでご覧ください。
これはWindowsのバッチファイルですが、同じ要領でシェルスクリプトも作成できます。
第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 FILE_NAME=%3 rem ファイルパス中のスラッシュを置換 set FILE_NAME=%FILE_NAME:/=_% set BASE_FILE="%WORKING_DIR%\%1_%FILE_NAME%" set REF_FILE="%WORKING_DIR%\%2_%FILE_NAME%" 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 012345 abcdef src/file.asta
ハッシュ値を確認するのが少々手間かもしれませんが、これで差分を確認できます。
もう一つ、
Sourcetreeを使用して、編集中のファイルと編集前のリビジョンの差分を確認する方法をご紹介します。Sourcetreeのオプション設定から、外部DiffツールのDiffコマンドに、astah-commandへのパス(.exeではなく.batにしてください。Macではastah-command.sh)、引数に”-diff $LOCAL $REMOTE” を指定してください。
これでSourcetreeで、編集中のプロジェクトファイルのポップアップメニューから外部Diffを選択することで、プロジェクトの比較画面が表示されます。
いかかでしたか。
astah*のプロジェクトファイルをバージョン管理する場合のヒントとなれば幸いです。