我正在处理一个非常复杂的 Django 项目(50 多个模型),其中包含一些复杂的逻辑(许多不同的工作流、 View 、信号、API、后台任务等)。让我们称之为 project-base
.目前使用 Django 1.6 + South 迁移和很多其他 3rd 方应用程序。
现在,其中一个要求是创建这个项目的一个分支,它将在这里和那里添加一些字段/模型以及一些额外的逻辑。让我们称之为 project-fork
.大多数额外工作将在现有模型之上,但也会有一些新模型。
如 project-base
继续开发,我们希望这些功能也进入project-fork
(很像 git-land 中的 rebase /合并)。 project-fork
中的额外变化不会合并回 project-base
.
实现这一目标的最佳方法是什么?以下是我的一些想法:
project-fork
中使用南合并使其与来自 project-base
的最新更改保持同步,如解释 here .使用信号和任何其他必要的手段来保持新逻辑来自 project-fork
尽可能松散耦合以避免任何潜在的冲突。 project-base
模型,而是在引用旧模型的不同应用程序中创建新模型(即使用 OneToOneField
)。额外的逻辑可能会出现在旧的和/或新的应用程序中。 我会选择选项 1,因为它整体上看起来不那么复杂,但可能会带来更大的风险。这是我如何看待它发生的:
关于
project-base
的迁移:关于
project-fork
的迁移:合并后,迁移将如下所示:
使用这种方法有什么陷阱吗?有没有更好的办法?
感谢您的时间。
最佳答案
南方官方工作流程:
南方官方推荐是用--merge
试试标志:http://south.readthedocs.org/en/latest/tutorial/part5.html#team-workflow
这显然不适用于所有情况,但根据我的经验,它适用于大多数情况。
陷阱:
“更好”的方法通常是避免同时更改相同的模型,最简单的方法是尽可能减少错误窗口。
在这些情况下我的个人工作流程:
从一开始模型变化就很明显的小 fork :
对于变化并不总是很明显和/或将再次发生变化的大 fork :
关于django - 在 Django fork 上维护南迁移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29747536/