Как вы обрабатываете 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, и вы в игре.