MPS 2023.3 ヘルプ

バージョン管理

VCS メニュー

VCS メニューには、バージョン管理に関連するコマンドと設定が含まれています。

vcs menu

VCS 操作のポップアップ (Alt+`) または VCS | VCS 操作のポップアップを使用して、VCS 関連のコマンドをすばやく呼び出します。

ポップアップとメニューのアクションのリストは、現在有効になっている VCS によって異なります。

vcs_operations_quick_list.png

VCS アドオン

バージョン管理から MPS に最初にプロジェクトをインポートするか、既存のプロジェクトに VCS マッピングを追加するとき、MPS はいわゆる VCS アドオンをインストールすることを提案します(メインメニューから後でインストールすることもできます: バージョン管理 | MPS VCS アドオンのインストール)。

MPS VCS Add-ons

VCS アドオンは、Subversion および Git の特別なフックまたはマージドライバーであり、特定のタイプのファイルのネイティブマージメカニズムをオーバーライドします。これらは、モデルファイル(*.mps)と生成されたモデルキャッシュ(依存関係生成されたファイル、および trace.info ファイル)のマージ手順を決定します。VCS 関連の操作(ブランチのマージやリベースなど)を実行するたびに、これらのフックが呼び出されます。

モデルの場合、XML コンテンツを読み取り、.xml ファイルの行を単純にマージするのではなく (無効なマークアップにつながる可能性がある)、「モデル」の観点から高レベルで変更をマージしようとします。モデルは自動的にマージできず、競合状態のままになることがあります。この場合、手動でマージできます。例: 競合しない変更をすべて適用した後、モデルが同じ ID を持つ複数のノードを持つようになると、マージ中に ID の競合が発生する可能性があります。このような状況では、自動マージは実行されません。自動マージを実行すると、ノード参照に問題が生じ、識別が困難になる可能性があるためです。マージ結果をインスペクションし、このような競合を手動で解決する必要があります。

モデルキャッシュの場合、マージドライバーの動作は異なります。ジェネレーターの依存関係(生成されたファイル)とデバッガーのトレースキャッシュ(trace.info ファイル)はマージ後にクリアされるため、対応するモデルを再生成する必要があります。コンパイルで使用される Java 依存関係(依存関係ファイル)は、マージ後にコンパイルを可能にする単純なユニオンアルゴリズムを使用してマージされます。

VCS アドオンにはいくつかのタイプがあります。

  • Git のグローバル自動登録設定 : Git に標準の Unix 行末(LF)のテキストファイルをリモートリポジトリに格納するように強制しますが、作業コピーのテキストファイルはローカルのシステム依存の行末を使用します。これは、チームメートが行末の異なる異なるオペレーティングシステム(Windows と Unix)を使用している場合に便利です。

  • Git グローバルマージドライバの設定 : MPS モデルのマージドライバーをグローバル Git 設定に登録して、.gitattributes ファイルで参照できるようにします。マージドライバー名とパスを実際のマージドライバーコマンドにマップするだけです。

  • リポジトリの Git ファイル属性 : 特定のファイルタイプ(*.mpstrace.info など)の MPS マージドライバーを有効にします。マージドライバが認識できるように、既存のすべてのファイルタイプを一覧表示するファイルを作成します。構成はチームメンバー間で共有されるため、このファイルをバージョン管理下に置くことをお勧めします。

ignore ファイル

MPS モデルを VCS に保存するための 2 つの戦略があります。

  • 重要な MPS プロジェクト構成ファイル(workspace.xml ファイルを除く .mps フォルダー)とプロジェクトソース(msd、mpl、mps ファイルタイプなどのモデルファイル)のみをバージョン管理下に置くこと。

  • 生成されたコードも追加で含めます。

生成されたコードが VCS に含まれているため、変更をコミットする前にモデルを再生成することを忘れないでください。

例: workspace.xml を除外する典型的な .gitignore ファイルである Git を使用する場合、生成されたファイルと実行中のテストの典型的な副産物は次のようになります。

workspace.xml junitvmwatcher*.properties build.properties # generated java classes and java source files # manually add any custom artifacts that can't be generated from the models classes_gen source_gen source_gen.caches # generated test code and test results test_gen test_gen.caches TEST-*.xml junit*.properties

次のショートカットを使用して、グローバルバージョン管理コマンドを呼び出すこともできます。

VCS 操作のポップアップ ...

Alt+`

コミット ...

Ctrl+K

プロジェクトの更新

Ctrl+T

ロールバック

Ctrl+Alt+Z

プッシュ ...

Ctrl+Shift+K

次の変更

Ctrl+Alt+Shift+Down

前の変更

Ctrl+Alt+Shift+Up

バージョン管理ウィンドウを表示する

Alt+9

コミットウィンドウを表示

Alt+0

関連ページ:

依存関係

モデル間の依存関係を管理することは不可欠です。そのトピックに関する情報については、左側のパネルを参照してください。テスト言語依存関係を正しくする

ビルド言語

MPS ビルド言語とは何ですか? :ビルド言語は宣言的な方法でビルドを定義するための拡張可能なビルド自動化 DSL です。Ant に生成された、Ant の実行機能を活用しながら、ソースをクリーンで無駄のない詳細情報から解放します。一番下に ANT がある MPS 言語のスタックとして編成されているため、ビルド手順の各部分を異なる抽象化レベルで表現することができます。(MPS プラグインのような)複雑なアーティファクトを構築することは、言語の慣習に従えば、たった 1 行のコードで指定できますが、同時...

デバッガー

MPS は、カスタムデバッガーを作成し、java のデバッガーと統合するための API を提供します。MPS デバッガー機能の説明については、デバッガーの使用箇所ページを参照してください。基本:ユーザーモデルから生成されるコードをデバッグするために、MPS は以下をする必要があります: デバッガーでシームレスに 2 つの世界を一致させることができるようにするために、生成されたコードまでユーザモデルのノードを追跡します、どのノードにどのタイプのブレークポイントを作成できるかを理解する、デバッガーで...

Git ブランチから別の Git へ変更を適用する

Git では、あるブランチから別のブランチへの変更を統合するいくつかの方法があります。ブランチのマージ、ブランチのリベース、チェリーピックの個別コミット、コミットから個別の変更を適用する、特定のファイルをブランチに適用する、ブランチのマージ:特定のタスクで機能する機能ブランチを作成し、機能を完了してテストした後、作業の結果をメインコードベースに統合するとします。これを行う最も一般的な方法は、ブランチをマスターにマージすることです。機能ブランチで作業をしている間、チームメイトが master に...

競合の解決

バージョン管理システムによっては、状況によっては競合が発生することがあります。チームで作業していると、現在作業中のファイルに誰かが変更をコミットする状況に遭遇することがあります。これらの変更が重複しない場合 (つまり、コードの異なる行に変更が加えられた場合)、競合するファイルは自動的にマージされます。ただし、同じ行が影響を受けた場合、バージョン管理システムは一方を他方よりもランダムに選択することができず、競合を解決するように求められます。ブランチをマージ、リベース、チェリーピックするときにも競合...

Git リポジトリに変更をコミットしてプッシュする

Git リポジトリに新しいファイルを追加するか、すでに Git バージョン管理下にあるファイルを変更し、現在の状態に満足したら、作業の結果を共有できます。これには、ローカルにコミットしてリポジトリのスナップショットをプロジェクト履歴に記録し、次にリモートリポジトリにプッシュして他のユーザーが使用できるようにすることが含まれます。Git ユーザー名を設定する Git は、コミットを ID に関連付けるために、ユーザー名を知っている必要があります。ユーザー名を設定していない場合、MPS は、最初に変更...