MPS 2019.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回以上繰り返されるだけです。

| ----- 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. ブランチをマージする

最終更新日: 2019年6月7日