如何使用 git 跟踪 Django 模型的变化?
How to track Django model changes with git?
假设你写了一个Django网站,使用git来管理源代码。您的网站有多个实例(每个开发者至少一个)。
当您在提交中对模型执行更改时,每个人都需要更新自己的数据库。在某些情况下,运行 python manage.py migrate
就足够了,在其他一些情况下,您需要 运行 一些自定义 SQL 查询 and/or 运行 一些Python 更新不同位置值的代码。
如何实现自动化?有没有一种干净的方法可以将这些 "model updates"(例如执行适当操作的小型 shell 脚本)捆绑到相关的提交中?我考虑过为此使用 git 钩子,但是随着代码 运行 的变化,我不清楚如何将它们用于该目的。
如果您跟踪 /migrations
,您可以 create/modify 迁移文件,如 doc
中所述
这样,同事只需运行 migrate
即可执行查询
您应该跟踪迁移。唯一需要注意的是分支合并。如果每个人都使用一个功能分支并在他的分支上进行开发,那么一旦该分支被集成,就会应用更改。那时(拉取请求时间或集成时间)您需要确保迁移有意义,如果没有修复它们。
所有 对模型的更改应该在迁移中。如果你 "need to run a few custom SQL queries and/or run some Python code to update values" 那么这些也是迁移,应该写在迁移文件中。
您应该会看到任何数据库重构工具,例如 liquibase so you can source control your database changes. Here is a wrapper for python。
假设你写了一个Django网站,使用git来管理源代码。您的网站有多个实例(每个开发者至少一个)。
当您在提交中对模型执行更改时,每个人都需要更新自己的数据库。在某些情况下,运行 python manage.py migrate
就足够了,在其他一些情况下,您需要 运行 一些自定义 SQL 查询 and/or 运行 一些Python 更新不同位置值的代码。
如何实现自动化?有没有一种干净的方法可以将这些 "model updates"(例如执行适当操作的小型 shell 脚本)捆绑到相关的提交中?我考虑过为此使用 git 钩子,但是随着代码 运行 的变化,我不清楚如何将它们用于该目的。
如果您跟踪 /migrations
,您可以 create/modify 迁移文件,如 doc
这样,同事只需运行 migrate
即可执行查询
您应该跟踪迁移。唯一需要注意的是分支合并。如果每个人都使用一个功能分支并在他的分支上进行开发,那么一旦该分支被集成,就会应用更改。那时(拉取请求时间或集成时间)您需要确保迁移有意义,如果没有修复它们。
所有 对模型的更改应该在迁移中。如果你 "need to run a few custom SQL queries and/or run some Python code to update values" 那么这些也是迁移,应该写在迁移文件中。
您应该会看到任何数据库重构工具,例如 liquibase so you can source control your database changes. Here is a wrapper for python。