発表日: 2022年03月11日 |
Sebastian Gerhardt, Software Developer, Production Software & SIL Simulation, dSPACE GmbH
Sven Siemon, Technical Author, R&D Governance & Competence Partners, dSPACE GmbH
Stack OverflowのDeveloper Survey 2021によると、全回答者の90%以上がGitを使用しており、この分散型バージョン管理システムを引き続き使用したいと考えています。Linus Torvalds氏がGitを開発した2005年当時には、Gitがこれほど市場に浸透することはおそらく予測できなかったでしょう。dSPACEの多くのお客様は、開発スピードの迅速化、柔軟性の向上、連携の強化といった最新の分散型バージョン管理システムの利点を活かすため、既にGitを使用しているか、すぐに切り替える計画を立てています。ただし、そのままの状態のGitでは、テキストファイルを管理できるだけであり、TargetLinkやSimulink ® モデルファイルなどのバイナリファイルに対応することはできません。Model CompareをGitに統合することで、モデルファイルの比較とマージを実現できます。
Gitにはさまざまなメリットがありますが、同時に分岐管理、ファイルロック、品質管理などの新たな課題がユーザーから提示されています。また、Gitでは、ライブラリエレメントが変更された場合にライブラリファイルの変更を検出するため、TargetLinkやSimulink ® のモデルファイルにおいてはファイルベースの比較手法を用いる必要があります。つまり、ライブラリエレメントを参照するモデルではなく、変更したライブラリファイルを比較しなければなりません。Model Compareを使用すると、開発者は日常業務において容易にこれらの課題を克服できます。
それぞれの開発者が企業にもたらす価値が異なるように、それぞれの企業環境はさまざまです。「 GitとModel Compareの連携」のドキュメントでは、 ご使用の環境にModel Compareを統合する方法が示されています。ただし今回は、Model CompareをGitのモデルファイル用外部差分およびマージツールとしてTortoiseGitで設定および使用することに焦点を置きます。Model Compareは、外部プログラムとして指定する必要があります。次の表を参照してください。
差分ビューア | マージツール |
---|---|
"Model Compareインストレーションへのパス>\bin\ModelCompare_W.exe" %base %mine -reftitle %bname -comptitle %yname -Session Temporary | "Model Compareインストレーションへのパス>\ bin\ModelCompare.exe" %theirs %merged -camfile %base -reftitle %tname -comptitle %mname -camtitle %bname -Session Temporary -ComfortCopy -ConflictRes Interactive |
設定を完了すると、テキストファイルやソースファイルの場合と同様にTortoiseGitを引き続き使用できます。TargetLinkやSimulinkのモデルファイルの変更を比較またはマージしたい場合は、Model Compareを開けばすぐにインテリジェントでカスタマイズ可能な比較アルゴリズムやマージ機能を使用可能です。
Figure 1: Binary file conflict, but no model conflict.
Gitで*.slxファイルなどのバイナリファイルのマージを試みると、Gitはバイナリファイルをマージできないため、必然的にバイナリファイルの競合が発生します。ただし、Model Compareでは、モデルファイルの解析によりモデルの競合が発生する変更と発生しない変更を区別することができます。そのため、異なるモデルエレメントを変更した場合もモデルの競合は起きず、変更をマージすることができます(図1)。また、Model Compareから容易なコピー操作で自動的にモデルファイルをマージしたり、git-merge-driverを介して直接Gitに自動マージを統合したりすることも可能です。詳細については、以下を参照してください: GitとModel Compareの連携
Figure 2: Binary file conflict and model conflict.
同じGainブロックや信号線などの同一モデルエレメントに異なる変更が加えられた場合、Model Compareはモデルの競合を検出します(図2)。そして、このような場合はModel Compareが競合の解決をサポートします(図2)。Model Compareは、あらゆるマージシナリオに対応できるよう開発されているため、バイナリマージ競合を恐れる必要はありません。
ご使用のGit環境でModel Compareを用いてモデルを比較およびマージするための設定に加え、下記のGit、Model Compare、およびSimulink ® に関するヒントを活用すると、日常業務を迅速に行うことができます。
ツール | ヒント | 説明 |
---|---|---|
Git | バイナリおよび大きなファイルに対してGit Large File Storage(LFS)の使用を検討する。 | バイナリファイルや大きなファイル(*.slx(モデルファイル)、*.dd(TargetLink Data Dictionary)、および大きな*.arxml(AUTOSARコンフィギュレーション)ファイルなど)にはGit LFSの使用をご検討ください。Git LFSを使用すると、Gitが遠隔サーバーに保存されているこれらのファイルを指すポインタのみを保持し、現在のバージョンのみをローカルのGitキャッシュにコピーするため、ローカルハードドライブのスペースの節約やGitの一部の動作の高速化が可能になります。 |
Git | Gitのライブラリにチェックインする。 | ライブラリをGitの外側で処理する場合は、すべてのモデルバージョンに正しいライブラリバージョンが存在することを確認するために追加のツールが必要になります。当社では、少なくとも変更予定のライブラリにはGitを使用することをお勧めします。同じGitリポジトリのライブラリにチェックインするか、またはGitのサブモジュール機能を使用してください。本来、Gitはバージョン管理システムであり、コンフィギュレーション管理システムではありません。 |
Model Compare | 動作中のMATLAB ® セッションを利用する。 | 日常業務において、MATLAB ® インスタンスが動作している場合があります。このインスタンスを使用すると、ダンププロセスを高速化し、比較結果をすばやく出せるようModel Compareを設定することができます。 |
Model Compare | 設定を管理する。 | Model Compareでは、比較設定をエクスポートおよびインポートすることができます。-ComparisonSettingsオプションを使用して、比較設定がチーム全体で同一となるようにしてください。 |
Model Compare | 一時的なセッションを使用する。 | ご使用のGit環境からModel Compareを開始すると、Gitによってすべてのファイルが管理され、少なくとも1つのモデルファイルは一時的なファイルです。モデルファイルの名前の変更や、作業環境外に保存できます。Model Compareの永続的な機能を非アクティブ化するには、 -session Temporary コマンドを使用します。これにより、冗長的な保存ダイアログなどの不要な機能やチェックが無効化されるため、作業に集中することができます。 |
Simulink ® | モデルファイルを適切に保存する。 | 一部の内部メタデータは保存操作ごとに変更されるため、Simulinkモデルを一切変更せずに保存した場合でも、保存されたバージョンはそれぞれ異なります。これにより、Gitが変更を検出します。そのため、モデルファイルの保存はそれらを変更した場合にのみ行ってください。また、Simulinkでは、デフォルトで Save All の保存操作が適用されています。参照エレメントのみを変更した場合は、 Save Referenced Files 操作を使用することをお勧めします。 |
dSPACEでは、技術が日進月歩する時代に事業活動を行うさまざまなお客様に対し、常に最良のソリューションをお届けできるよう努力しています。Linus Torvalds氏は、ビートルズの『I’m So Tired』という曲の歌詞にある「馬鹿者」という意味の英国の俗語(git)から、開発したシステムをGitと命名しました。今回の投稿で、当社がGitとModel Compareの賢明な活用方法をすべてお示しできていれば幸いです。GitにおけるModel Compareの使用に関してご不明な点がございましたら、お気軽にお問い合わせください。
最新の技術開発動向をつかんで、イノベーションを加速。
メールマガジンの購読希望・変更/配信停止手続き