Django/ Python- я должен запускать makemigrations в локальной ветке или только на master?
Я работаю над проектом, написанным на Python/ Django, и недавно внес некоторые изменения в один из models
, Я хочу протестировать изменения, которые я внес сейчас, прежде чем приступить к разработке этой новой функции, но я знаю, что мне нужно будет запустить python manage.py makemigrations
& python manage.py migrate
до изменений, которые я внес в models
вступить в силу.
Я занимаюсь разработкой отдельно git
филиал в master
, но я немного не уверен, что здесь лучше всего использовать миграции на разных ветках (я относительно новичок в Python / Django и Git).
Было бы разумно бежать makemigrations
в моей ветке разработки и тестировании там, так же, как я тестировал исправления ошибок, над которыми я до сих пор работал, или мне нужно будет объединить мою ветку разработки с master
перед запуском makemigrations
?
Я знаю, что если я выполню миграции в своей ветке разработки, мне нужно будет запустить их снова master
однажды я объединил свои изменения, но мне было просто интересно, есть ли опасности в этом подходе или на что мне стоит обратить внимание?
2 ответа
Как правило, вы выполняете изменения в своей ветви разработки и перемещаете код (в данном случае файлы миграции) в более высокие ветви (UAT, Staging, Master и т. Д.).
Таким образом, вам никогда не потребуется запускать makemigrations в любой другой ветке, а только команду migrate.
Вы можете иметь столько файлов миграции, сколько вам нужно, это не сильно влияет на производительность и высоко оптимизировано
Вы всегда можете раздавить / объединить ваши миграции, если их слишком много или если вы хотите это сделать.
Смотрите Squasing Migrations
Бег makemigrations
автоматически создаст файлы Python в папке "миграции" приложения, в котором вы изменили модель. Эти файлы должны быть версионированы в git, потому что они не могут быть отделены от ваших модификаций модели.
Затем, когда вы объедините свою ветвь, модификация в модели и соответствующая миграция будут в дереве git. Итак, следующий звонок migrate
синхронизирует БД с текущим состоянием, описанным вашими моделями.