Understand 6.0でSVN連携して、2つのリビジョンを比較する

以前、「Understand 6.0でGit連携して、2つのリビジョンを比較する」において、 Understand 6.0でGit連携することで2つのリビジョンを簡単にプロジェクト比較する機能の設定方法をご紹介しました。これに対して多くのお客様から、「Understand 6.0でも、SVNで連携できると嬉しい」という声をいただきました。

今回は、Understand 6.0のユーザーツール機能を使用して、SVNリポジトリの2つのリビジョンを指定することで、各リビジョンを自動的に解析し、比較する方法をご案内します。
本手順によりSVNでも任意のリビジョンを2つ指定いただくだけで、簡単にリビジョン間の解析差分を確認いただくことが可能となります。

これにより、例えばSVNでも以下のようなユースケースにおける利用が考えられます。

ユースケース

  • 開発者のユースケース
    developブランチの同一ブランチ内の前回のリビジョンと今回のリビジョンを、開発者自身がCompareグラフやソースコード差分機能を通して差分を確認する。また、比較結果となる画像をpngファイルで出力し、変更設計書などのドキュメントに張り付けてSVNでコードと一緒に管理する。
  • レビュアーのユースケース
    メインブランチにコミットする直前のリビジョンと開発スタート時のリビジョンを比較して、差分をチェックする。テスト計画レビューなどでUnderstandで確認したコードベースの差分と、テスト項目の比較をする。

今回は、分析するサンプルコードとして、「C/C++のオープンソースプロジェクト︓Tortoisesvn」のリポジトリを使⽤することにします。
※Java、C#にも本機能は対応しています。



前提条件

  1. 動作確認済環境
    • Windows 10 64bit
    • Understand 6.0 (Build 1076)
    • 有効なUnderstandライセンス適用済(APIライセンスは不要)
    • SVN コマンドラインツールインストール済
      (例)以下のPath設定は https://www.visualsvn.com/downloads/ から、[Apache Subversion command line tools]をDownloadし、[C:\tools]ディレクトリにインストールした場合の例
    • 環境変数[Path]に以下を追加済(SVNクライアント及びUnderstandのインストール先に合わせて変えてください。)
      • C:\Program Files\SciTools\bin\pc-win64
      • C:\tools\Apache-Subversion-1.11.1\bin
  2. 解析対象
    • 言語:C/C++(Fuzzy)
    • 解析コード:TortoiseSVN(オープンソース)
    • リポジトリパス:
      https://svn.code.sf.net/p/tortoisesvn/code/trunk/src/Utils
      ※サンプルでは気軽にお試しいただけるようコード量調整のため、Utilsモジュールのみを指定しています。

事前準備

1. SVNリポジトリ

今回のサンプルではオープンソースのSVNリポジトリを使用します。
このため、ご試用いただく上でお客様側でSVNリポジトリを準備いただく必要はありません。お客様側にて準備された、SVNリポジトリに接続される場合には、後述のユーザーツールの設定で入力するパラメータを環境に合わせて変更してください。

2. batファイルの配置

  1. ワークスペースを作成します。
    Compareディレクトリを作成し、Compareディレクトリ直下にCompareSVNディレクトリを作成します。
  • パスの例
    • C:\work\Compare\CompareSVN
  1. 以下のzipファイルをダウンロードして解凍し、batファイルをCompareディレクトリ直下に配置します。
  • batファイルの配置パスの例
    • C:\work\Compare\CompareSVN.bat
  • 配置するbatファイル
    • CompareSVN.bat

3. ユーザーツールの設定

  1. UnderstandのGUIを起動し、[ツール]-[オプション]-[ユーザーツール]を選択します。
ユーザーツール
  1. [ユーザーツール]の新規から、ユーザーツールを作成していきます。
    メニューテキスト:svn\undCompare

  1. ユーザーツール内で、以下の箇所を修正します。
    [svn\undCompare]の設定
svn\undCompareの設定
  • [コマンド(C)]:[batファイルの配置]項で配置した[CompareSVN.bat]ファイルのパスを指定します。 例)C:\work\Compare\CompareSVN.bat
  • [パラメータ]:$PromptForSelect”PathKind=URL;DirectoryPath” $PromptForText”repoPath=dafaultValue” $PromptForText rev_A(usually_new) $PromptForText rev_B(usually_old) $PromptForSelect”Language=C++Fuzzy;JAVA;C#”
  • [初期ディレクトリ]:Compareディレクトリ直下の[CompareSVN]ディレクトリを指定します。
    初期ディレクトリパス
    (例)C:\work\Compare\CompareSVN
  1.  [OK]ボタンを押します。これでユーザーツールの設定は完了です。

※Understand設定ファイル(C:\Users\(ユーザー名)\AppData\Roaming\SciTools\Understand.ini)を削除されますと、本ユーザーツールの設定は削除されます。

予め[ユーザーツールのエクスポート]より設定内容をバックアップしておくことをお勧めいたします。

実施手順:リビジョン番号を2つ指定し、リビジョンの比較を行う

  1. Understand(GUI)を起動した状態にします。
    ※後にオープンエラーが発生することを防ぐため、プロジェクトは開かないでください。
  1. メニューバーから[ツール]-[ユーザーツール]-[svn]-[undCompare]を選択します。
[ツール]-[ユーザーツール]-[svn]-[undCompare]を選択
  1. 表示されたダイアログにおいて各値を指定し、OKボタンを押します。
各設定例

PathKind:”URL”を選択(お客様環境に接続する場合は環境に合わせて指定)

  • PathKindの選択肢はご使用される際に”URL”または”DirectoryPath”のいずれかを毎回選択いただく必要があります。
    いずれかを優先的に使用されたい場合には、不要な選択肢を削除いただくか、選択肢の順番を入れ替えていただき普段使用される選択肢を先頭にしてください。

repoPath:URLを入力
(リポジトリパスを指定してください)

  • repoPathは初期値では”defaultValue”の文字列が入力されています。
    実行毎に指定頂くことが可能ですが、デフォルト値を設定されたい場合には、以下の例のような文字列に変更いただくことができます。
    (例)C:\work\CI\SvnRepository\repo
    (例)https://svn.code.sf.net/p/tortoisesvn/code/trunk/src/Utils

rev_A:比較元リビジョン(通常は新ver)

rev_B:比較先リビジョン(通常は旧ver)

Language:解析言語(C/C++Fuzzy・Java・C#)

[C/C++サンプルプロジェクト]
PathKind :URL
repoPath: https://svn.code.sf.net/p/tortoisesvn/code/trunk/src/Utils
rev_A(usually_new) :24147
rev_B(usually_old) :23880
Language :C++Fuzzy

[Javaサンプルプロジェクト]
PathKind :URL
repoPath:http://svn.code.sf.net/p/jamon/code/trunk/jamon
rev_A(usually_new):3128
rev_B(usually_old):3088
Language:Java

[C#サンプルプロジェクト]
PathKind :URL
repoPath: http://svn.code.sf.net/p/megui/code/
rev_A(usually_new):2928
rev_B(usually_old):2919
Language:C#

svn\undCompareのダイアログの入力例(URL指定)

  1. 以下のような実行ログが出力され、新しいUnderstandの画面が立ち上がり、その画面でA.undが自動的に開けば成功です。
実行ログ

  • (補足)パラメーターとbatファイル内で実行されるsvnコマンドの関係

    指定したパラメーターと実行されるsvnコマンドの関係を説明します。batファイル内のsvnコマンド自体はお客様側で変更いただく必要はありませんが、batファイル内容を把握、もしくはカスタマイズされる場合の参考情報として記載いたします。
  • リポジトリパスがURLの場合
    • PathKindは”URL”を指定
    • repoPathは該当のリポジトリURLを指定
    • revA, revBは指定のリビジョンを指定

    • (例1)
      • PathKindを”URL”、
        repoPath を https://svn.code.sf.net/p/tortoisesvn/code/trunk/src/Utils、
        リビジョンを23880と指定した場合、以下が実行されます。

        svn co -r 23880 https://svn.code.sf.net/p/tortoisesvn/code/trunk/src/Utils

      • batファイル側ではプロトコルへの制限はかけておりませんので、
        svn/http/httpsなどsvnコマンドで対応しているプロトコルが使用可能です。(リポジトリ側では制限がある場合がございます。)
      • 下記に示すように利便性を考え、fileプロトコルの場合のみ、ディレクトリパス指定で利用できるように、batファイル側で調整しております。

  • リポジトリパスがディレクトリパスの場合
    • PathKindは”DirectoryPath”を指定
    • repoPathは該当リポジトリのrepoディレクトリのパスを指定
    • rev_A,rev_Bは指定のリビジョンを指定

    • (例2)
      • SVNのリポジトリ情報が含まれているrepoディレクトリをご指定ください
      • PathKindを”DirectoryPath”、repoPathを、”C:\work\CI\SvnRepository\repo”、リビジョンを9と指定した場合 、以下のコマンドが実行されます。

        svn co -r 9 file:///C:/work/CI/SvnRepository/repo

結果の確認

以降は「Understand 6.0でGit連携して、2つのリビジョンを比較する」の記事と同様になります。今回のサンプルでは、例えば以下のように機能をお試しください。

  • [エンティティフィルター]から、ファイル[Libraries.cpp]選択後、右クリックし、[グラフィカルビュー]-[Compare Butterfly]でCompare Butterflyグラフを表示し、確認します。
[Libraries.cpp]のButterfly Compareグラフ
  • ツールバーから[比較]-[変更されたエンティティ]より、変更されたエンティティの一覧を表示することができます。
    • 変更されたエンティティは、Understandプロジェクト間での差分を、追加・変更・削除に分類し、出力する機能です。それぞれのエンティティをクリックすることにより、コード差分も確認することができます。
ツールバー[比較]-[変更されたエンティティ]

[変更されたエンティティ]画面

タイトルとURLをコピーしました
Close Bitnami banner
Bitnami