我正在使用South来管理我的开发和生产环境中的架构和数据迁移。因此,我将我的迁移保留在我的git存储库中,因此我在开发中所做的更改已在生产中正确迁移。
我正在开发的应用和项目目前是私有的,仅由我开发。在某些时候,我想发布/分发我的应用程序。我假设在那时,我将有一个“最终”架构,因此不会“需要”南方。由于之前尚未分发这些应用程序(我的环境除外),因此公开版本不需要我在开发应用程序时使用的迁移。
我有两个问题:
基于我的假设删除或至少“清理”迁移是否良好(或可接受)?
醇>
谢谢,
答案 0 :(得分:3)
对于处理南方和版本控制的人来说,这是一个常见的混淆点。当然,您应该为项目提交迁移,因为其他人需要自己运行相同的迁移。但是,您应该在提交之前清理迁移,这实际上看起来很简单。
如果它是一个全新的应用程序或一般的全新项目:
将应用回滚到“零”:
python manage.py migrate myapp zero
删除应用的所有迁移(“__init__.py
以外的”迁移“目录中的所有内容。)
生成新的初始迁移:
python manage.py schemamigration --initial myapp
如果它是现有的应用程序,那么该过程大致相同,但您只是在第一次新迁移之前回滚到。然后,您只需生成新的自动迁移,而不是初始迁移。例如,如果应用程序已经处于迁移0005并且您创建了迁移0006,0007和0008:
回滚到您创建的第一个迁移之前(0006):
python manage.py migrate myapp 0005
删除您创建的所有新迁移(0006,0007和0008)
生成新的自动迁移:
python manage.py schemamigration --auto myapp
无论哪种方式,您最终只会使用一个文件封装所有更改而不是多个文件。然后,将其提交给源控件。