您如何在非主分支上干净地维护 django 迁移?
Posted
技术标签:
【中文标题】您如何在非主分支上干净地维护 django 迁移?【英文标题】:How do you cleanly maintain django migrations on non-master branch? 【发布时间】:2018-09-13 00:14:25 【问题描述】:-
想象一下,我有一个进行迁移的分支。这是一个与 master 保持同步的实验性分支,但暂时不会合并到其中,如果有的话。
主迁移随时间而变化。
结果是当我在master中合并时,我最终得到了多个迁移叶子,这意味着manage.py迁移错误。如果我只做
manage.py makemigrations --merge
,那么它会创建一个新的叶子,稍后也会过时。
有没有好的方法来处理这个问题?我很想避免在长期依赖的分支中进行任何迁移。
【问题讨论】:
我认为2个选项:不要在非主分支中跟踪您的新迁移或其修改,并且仅在分支合并到主分支后生成主迁移。或者在更新分支之前将 master 迁移合并到您的分支中,然后提交并将分支合并回 master。 【参考方案1】:-
在合并之前在 master 之上重新建立一个实验分支。
从实验分支取消应用所有迁移:
manage.py migrate <appname> <previousMigration>
从实验分支中删除所有迁移。
创建一个全新的迁移:
manage.py makemigrations
将更改提交到实验分支
合并实验分支。如果没有其他人应用迁移,从存储库中删除迁移是完全安全的。
【讨论】:
虽然很有帮助,但重要的是要注意,这只有在迁移的所有内容都是自动生成的情况下才有效。如果您的实验分支上的任何迁移包含 - 例如 -migrations.RunPython
操作,它们将不会被重新创建。以上是关于您如何在非主分支上干净地维护 django 迁移?的主要内容,如果未能解决你的问题,请参考以下文章