Миграция в командных средах

При работе с миграциями в командных средах обратите особое внимание на файл моментального снимка модели. Этот файл может определить, выполняется ли слияние миграции товарища по команде с вашими пользователями или если необходимо устранить конфликт, повторно создав миграцию перед предоставлением общего доступа к ней.

слияние

При слиянии миграций с товарищей по команде могут возникнуть конфликты в файле моментального снимка модели. Если оба изменения не связаны, слияние является тривиальным, и две миграции могут сосуществовать. Например, в конфигурации типа сущности клиента может возникнуть конфликт слияния, который выглядит следующим образом:

<<<<<<< Mine
b.Property<bool>("Deactivated");
=======
b.Property<int>("LoyaltyPoints");
>>>>>>> Theirs

Поскольку оба этих свойства должны существовать в конечной модели, завершите слияние, добавив оба свойства. Во многих случаях система управления версиями может автоматически объединять такие изменения.

b.Property<bool>("Deactivated");
b.Property<int>("LoyaltyPoints");

В таких случаях миграция и миграция товарища по команде не зависят друг от друга. Так как любой из них может быть применен в первую очередь, вам не нужно вносить дополнительные изменения в миграцию, прежде чем предоставлять к ней общий доступ к вашей команде.

Разрешение конфликтов

Иногда при слиянии модели моментальных снимков модели возникает истинный конфликт. Например, вы и ваш товарищ по команде могли переименовать одно и то же свойство.

<<<<<<< Mine
b.Property<string>("Username");
=======
b.Property<string>("Alias");
>>>>>>> Theirs

Если вы столкнулись с таким конфликтом, устраните его, повторно создав миграцию. Выполните следующие действия.

  1. Прервать слияние и откат к рабочему каталогу перед слиянием
  2. Удалите миграцию (но сохраните изменения модели)
  3. Объединение изменений товарища по команде в рабочий каталог
  4. Повторная добавление миграции

После этого две миграции можно применить в правильном порядке. Их миграция применяется сначала, переименование столбца в Alias, после чего миграция переименовывает его в имя пользователя.

Миграцию можно безопасно предоставить остальной группе.