【发布时间】:2015-06-05 14:51:17
【问题描述】:
假设你写了一个 Django 网站并使用 git 来管理源代码。您的网站有各种实例(至少每个开发者一个)。
当您在提交中对模型执行更改时,每个人都需要更新自己的数据库。在某些情况下,运行 python manage.py migrate 就足够了,在其他情况下,您需要运行一些自定义 SQL 查询和/或运行一些 Python 代码来更新各个位置的值。
如何自动化?是否有一种干净的方法可以将这些“模型更新”(例如执行适当操作的小型 shell 脚本)捆绑到相关的提交中?我曾考虑过为此使用 git 挂钩,但随着要运行的代码随着时间的推移而发生变化,我不清楚如何将它们用于此目的。
【问题讨论】:
-
我认为跟踪
/migrations文件夹不是一个好主意,我认为每个开发人员都应该将其保留在本地。因此,如果您不跟踪迁移,当models发生变化时,您应该运行python manage makemigrations和python manage migrate。 -
@Gocht 不,不,不。迁移是代码库的一部分,必须保存在源代码管理中。
-
@DanielRoseman 在这件事上是绝对正确的。每个开发人员都保留本地迁移副本是灾难的完美配方
标签: python sql django git workflow