Должны ли миграции Django жить в контроле источника? - программирование

Должны ли миграции Django жить в контроле источника?

Как говорится в заголовке... Я не уверен, что миграции Django должны жить в контроле источника.

Для:

  • Если они случайно удалены с моей локальной машины, это вызовет у меня проблемы в следующий раз, когда я хочу запустить миграцию... правильно? Поэтому мне было бы полезно иметь их.

Против:

  • Devs, создающие проект в первый раз, не должны запускать их, они могут просто работать прямо из файла моделей.
  • Они кажутся машинной спецификой.
  • Могут ли они потенциально выявить вещи, которые я не хочу в базе данных?
4b9b3361

Ответ 1

Да, абсолютно!!

Из docs:

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

Одним из важных моментов является то, что миграция должна всегда тестироваться, прежде чем развертывать их на производстве. Вы никогда не должны создавать миграции при производстве, а применять их только.

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