Как вы обрабатываете Doctrine Migrations при использовании Git?

У меня есть проект Zend Framework/Doctrine 1.2, источник которого управляется git. Как вы отслеживаете классы миграции при переходе от ветки к ветке в git?

Например

В ветке A У меня есть файл класса миграции (038_version.php)

В ветке B У меня есть файл класса миграции (039_version.php)

Doctrine будет применять миграции последовательно на основе имени файла, поэтому мне нужно вытолкнуть функции в ветке A перед ветвью B, чтобы заставить миграцию Doctrine работать.

Должен ли я просто переносить все миграции в свою ветку и менять номера перед выходом в эфир?

Ответ 1

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

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

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

Система, с которой я работаю, теперь использует другой подход: у нас нет возможности делать инкрементные миграции, но только для восстановления базы данных из базовой линии

NDM добавляет:

Просто невозможно выполнить последовательные миграции в разветвленной системе

Ответ 2

Если у вас есть этот сценарий, у вас никогда не будет синхронизации веток. Кроме того, если у вас есть чистая БД, например, вы живете, вам не нужны миграции, просто удалите их на реальном сайте и запустите

migrations:diff

И он создаст вам новую миграцию для Db, и вы в игре.