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 синхронизирует БД с текущим состоянием, описанным вашими моделями.

Другие вопросы по тегам