3

以下摘自有关Team Workflow的 South 官方文档部分,

第二件事要注意的是,当您通过他们自己的迁移完成其他人的模型更改时,您需要创建一个新的空迁移,其中冻结两个开发分支的更改(如果您使用过 mercurial ,这相当于合并提交)。

我不明白为什么在这种情况下需要创建一个新的空迁移。开发人员不应该./manage.py migrate在从其他人那里提取模型更改(以及相应的迁移)之后运行吗?我在这里想念什么?

4

2 回答 2

1

我相信这意味着如果两个分支都对同一个模型进行了更改,那么最好合并代码并为这些更改重新创建一个迁移脚本。这是因为如果 branch1 有一个 0006 迁移脚本,而 branch2 有另一个 0006 迁移脚本(你知道南如何按顺序命名它们......)那么你不能正确地自动合并它们,因为它们实际上是不同的文件。

因此,您需要合并代码更改,然后为合并的分支重新创建迁移脚本。

于 2012-07-13T20:20:29.317 回答
1

我们遇到了与这件作品有关的问题。假设我们有一个模型:

class Article(Model):
    title = CharField()         

开发人员 1 在他的分支上添加一个字段,比如说,author(迁移冻结标题,作者) 开发人员 2date_published在他的分支上添加一个字段(迁移冻结标题,date_published)

然后有人合并了两个分支。他们得到的是两个迁移,一个不知道date_published,另一个没有见过 field author

这可能导致南试图在下次创建自动迁移时添加作者或 date_published 字段(无论最后添加了什么迁移),因为它根本不知道 100% 正确的数据库状态,它不会在迁移中冻结。

于 2012-07-14T00:35:34.823 回答