Gitでバージョン管理したastahファイルの差分を確認する方法

こんにちは。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

ハッシュ値を確認するのが少々手間かもしれませんが、これで差分を確認できます。

diff


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

sourcetree

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

astah-diff

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

コメントを残す