作者:jx轩宝妈咪 | 来源:互联网 | 2023-02-03 17:12
我应该将django迁移文件保存在git存储库中吗?在开发人员团队中,他们如何管理数据库更改。
例如,汤姆改变了他们的模型,进行了迁移和迁移,现在他的数据库以及他的迁移文件都发生了变化,从而保留了他的迁移故事。
同时,鲍勃也进行了更改。他的迁移文件与其他模型有关,他运行了makemigrations和迁移命令,并且更改了数据库。
Tom和Bob在同一个应用程序中工作,因此,他们共享相同的迁移文件。和相同的分贝。
那么,当Bob将他们的代码推送到git repo,然后Tom从git repo提取或获取代码时,会发生什么?迁移文件将混合在一起,并且它们的故事将被破坏。另外,如果数据库本身是sqlite文件,那么该数据库本身应该如何保存在git repo中呢?
1> 小智..:
您绝对应该在您的仓库中保留迁移!对于某些项目,通过编辑它们在迁移中包括初始数据或其他功能是有意义的,因此通过自动从中生成初始数据或其他功能来设置每个开发人员的环境models.py
将不适用于每个项目。
如果Tom和Bob都进行了彼此独立的更改(Tom添加了一个字段,Bob添加了另一个字段),则在创建合并迁移时,迁移文件将起作用。如果汤姆和鲍勃发生冲突,他们可能必须协调:
$ python manage.py migrate
CommandError: Conflicting migrations detected; multiple leaf nodes in the migration graph: (0002_mymodel_my_field_tom, 0002_mymodel_my_field_bob in myapp).
To fix them run 'python manage.py makemigrations --merge'
$ python manage.py makemigrations --merge
Merging myapp
Branch 0002_mymodel_my_field_bob
- Add field my_field_bob to mymodel
Branch 0002_mymodel_my_field_tom
- Add field my_field_tom to mymodel
Merging will only work if the operations printed above do not conflict
with each other (working on different fields or models)
Do you want to merge these migration branches? [y/N] y
Created new merge migration /myapp/migrations/0003_merge_20170517_1445.py
这是一本好书:
https://www.algotech.solutions/blog/python/django-migrations-and-how-to-manage-conflicts/