为什么需要将 django 迁移推送到版本控制系统

问题描述 投票:0回答:4

这是一种常见的做法,从事 django 项目的人们通常会将迁移与其他代码一起推送到版本控制系统。

我的问题是为什么这种做法如此普遍?为什么不直接推送更新的模型,然后每个人都在本地生成迁移。这种方法也可以减少解决迁移冲突的工作量。

python django migration django-migrations
4个回答
11
投票

如果您没有将它们提交给 VCS,那么会发生的情况是人们会对模型进行潜在冲突的更改。

当最终准备好部署时,您仍然需要 django 进行新的迁移,然后将每个人的更改合并在一起。这只会创建一个额外的不必要的步骤,可能会引入错误。

您还假设每个人都能够使用最新版本的代码,当您开始处理尚未准备好合并到主线的分支时,这并不总是可能的。


8
投票

迁移将数据库的状态与代码的状态同步。如果您不将迁移签入版本控制,您就会丢失中间步骤。您将无法返回版本控制历史记录并仅运行代码,因为数据库与该时间点的模型不匹配。

迁移与任何代码一样,应该进行测试,至少在基本级别上进行测试。尽管它们是自动生成的,但这并不能保证它们 100% 正常工作。因此,安全的方法是在开发环境中创建迁移,测试它们,然后将它们推送到生产环境以应用它们。


3
投票

首先,版本控制中的迁移允许您在生产中运行它们。

其次,迁移并不总是自动生成的。例如,如果您向模型添加新字段,您可能会编写迁移来填充该字段。无法从模型重新创建该迁移。如果该迁移不在版本控制中,那么其他人将无法运行它。


0
投票

当最终准备好部署时,您仍然需要 django 进行新的迁移,然后将每个人的更改合并在一起。这只会创建一个额外的不必要的步骤,可能会引入错误。

© www.soinside.com 2019 - 2024. All rights reserved.