我正在使用 South 来管理我的开发和生产环境中的架构和数据迁移。因此,我将迁移保存在 git 存储库中,以便我在开发中所做的更改可以正确迁移到生产中。
我正在开发的应用程序和项目目前是私有(private)的,并且仅由我开发。在某些时候,我想发布/分发我的应用程序。我假设到那时,我将有一个“最终”模式,因此不会“需要”南方。由于这些应用程序之前尚未分发过(除了在我的环境中),因此公共(public)版本不需要我在开发应用程序时使用的迁移。
我有一个两人问题:
根据我的假设删除或至少“清理”迁移是否好(或可接受)?
- 最好的方法是什么?我想为公共(public)/分布式基础保留一个分支是可行的,但我对 git 相当陌生,所以我不知道我的选择是什么。
谢谢
最佳答案
对于处理 South 和版本控制的人来说,这是一个常见的困惑点。当然,您应该在您的项目中提交迁移,因为其他人需要自己运行相同的迁移。但是,您应该在提交迁移之前清理迁移,这实际上非常简单。
如果它是一个全新的应用程序或一个全新的项目:
将应用回滚到“零”:
python manage.py migrate myapp zero
删除应用的所有迁移(“migrations”目录中除
__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
无论哪种方式,您最终都会得到一个封装所有更改的文件,而不是多个文件。然后,将其提交到源代码管理。
关于django - 如何从公共(public)存储库中排除南方迁移?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12569191/