【问题标题】:How do you cleanly maintain django migrations on non-master branch?您如何在非主分支上干净地维护 django 迁移?
【发布时间】:2018-09-13 00:14:25
【问题描述】:
  1. 想象一下,我有一个进行迁移的分支。这是一个与 master 保持同步的实验性分支,但暂时不会合并到其中,如果有的话。
  2. 主迁移随时间而变化。
  3. 结果是当我在master中合并时,我最终得到了多个迁移叶子,这意味着manage.py迁移错误。如果我只做manage.py makemigrations --merge,那么它会创建一个新的叶子,稍后也会过时。

有没有好的方法来处理这个问题?我很想避免在长期依赖的分支中进行任何迁移。

【问题讨论】:

  • 我认为2个选项:不要在非主分支中跟踪您的新迁移或其修改,并且仅在分支合并到主分支后生成主迁移。或者在更新分支之前将 master 迁移合并到您的分支中,然后提交并将分支合并回 master。

标签: django git django-migrations


【解决方案1】:
  1. 在合并之前在 master 之上重新建立一个实验分支。
  2. 从实验分支取消应用所有迁移:

    manage.py migrate <appname> <previousMigration> 
    
  3. 从实验分支中删除所有迁移。

  4. 创建一个全新的迁移:

    manage.py makemigrations
    
  5. 将更改提交到实验分支

  6. 合并实验分支。

如果没有其他人应用迁移,从存储库中删除迁移是完全安全的。

【讨论】:

  • 虽然很有帮助,但重要的是要注意,这只有在迁移的所有内容都是自动生成的情况下才有效。如果您的实验分支上的任何迁移包含 - 例如 - migrations.RunPython 操作,它们将不会被重新创建。
猜你喜欢
  • 2015-06-27
  • 1970-01-01
  • 2021-09-24
  • 1970-01-01
  • 2011-02-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-28
  • 2017-01-14
相关资源
最近更新 更多