MPS 2020.1ヘルプ

分岐を伴う移行の使用

分岐を伴うマイグレーションの使用

言語の進化をうまくサポートするために、移行ではクライアントコードを自動的にアップグレードして最新バージョンの言語または複数の言語を使用します。マイグレーションの資料では、MPSでマイグレーションを作成して実行するプロセスについて説明しています。簡単に言うと、言語の変更に準拠するようにモデルを変更するために、言語の作成者は移行を提供できます。MPSはプロジェクトで使用されている言語バージョンを自動的に追跡し、必要な移行を適用するようにエンドユーザーに要求します。

単一のブランチ開発を使用しても驚くことはほとんどありませんが、一般的なチーム設定では、機能とバグ修正のために複数のブランチが必要です。複数のブランチチームでは、異なるブランチで異なるバージョンの言語を使用するような状況には必然的に直面することになります。これは、マージ手順をより困難にします。

無痛マージの主な規則

2つのブランチを円滑にマージするために、それらのブランチで使用されるすべての言語は同じバージョンでなければなりません。以下は、2つのブランチで言語バージョンを簡単に同期させることを可能にする簡単なワークフローを説明します。

マージされたブランチのいずれにもマイグレーションは作成されていません

言語バージョンを同期するには、古いブランチの言語を更新して必要な移行を実行するだけです。両方のブランチは同じバージョンの使用言語を持ち、簡単にマージすることができます。

いくつかの移行が作成されました

考えられるすべてのケースは、それらの背後にある同じ考えを持っています。使用される言語のバージョンが異なるブランチを決してマージしないでください。マージする前に、すべてのマイグレーションを両方のブランチに伝搬する必要があります。

1. ブランチの1つで1つの移行が開発されました

移行を記述するときに行う必要がある唯一の特別なことは、移行自体を含むコミット(Cという名前)が存在する必要があることですが、同じコミットでコードを移行しないでください。移行されたファイルは後でコミットできます(たとえば、次のコミット)。
ここでの主なアイデアは、他のブランチに、使用されている言語の異なるバージョンをマージする必要なしに、新しい移行を可能にすることです。

あなたのヒストリーはこのように見えます:

| --- C --- [ブランチ1]

------|

| ------------ [ブランチ2]

ブランチ b1とb2をマージする

  1. b2をcommit Cとマージします。これで、b2に新しい移行ができました。

  2. b2で移行を実行する

  3. b1のHEADと合併する

非常に簡単ですね。

2. ブランチの1つでの2つ以上の移行

原理は変わりませんが、2回以上繰り返されるだけです。

| ----- C1 — C2 – [ブランチ1]

------|

| ------------ [ブランチ2]

  1. b2をC1とマージする

  2. b2でC1の移行を実行する

  3. C2とマージ

  4. B2でマイグレーションを実行する

  5. b1とマージする

3. ブランチの両方で移行が作成されます

一般に、解決するのが難しいためこの状況を避けることをお勧めします。このシナリオは、すべての移行を1つの合意されたブランチ(マスターなど)でのみ作成することで回避できます。

しかし、このような状況に陥った場合は、これを適切に解決する方法があります。

| --- C1 ----- [ブランチ1]

------|

| --- C2 ----- [ブランチ2]

  1. b2とC1、b1とC2をマージする

  2. b2でC1の移行、b1でC2の移行を実行します。

  3. ブランチをマージする

最終更新日: 2020年6月18日