在Django forks维持南迁
我正在从事一个相当复杂的Django项目(50多个模型),其中包含一些复杂的逻辑(许多不同的工作流、视图、信号、API、后台任务等)。让我们称之为在Django forks维持南迁,django,django-models,merge,django-south,rebase,Django,Django Models,Merge,Django South,Rebase,我正在从事一个相当复杂的Django项目(50多个模型),其中包含一些复杂的逻辑(许多不同的工作流、视图、信号、API、后台任务等)。让我们称之为项目库。目前正在使用Django 1.6+South migrations和许多其他第三方应用程序 现在,其中一个需求是创建这个项目的分支,它将在这里和那里添加一些字段/模型,并在此基础上添加一些额外的逻辑。让我们称之为项目fork。大部分额外工作将在现有模型的基础上进行,但也会有一些新模型 随着projectbase的不断开发,我们希望这些特性也能进
项目库
。目前正在使用Django 1.6+South migrations和许多其他第三方应用程序
现在,其中一个需求是创建这个项目的分支,它将在这里和那里添加一些字段/模型,并在此基础上添加一些额外的逻辑。让我们称之为项目fork
。大部分额外工作将在现有模型的基础上进行,但也会有一些新模型
随着projectbase
的不断开发,我们希望这些特性也能进入projectfork
(很像git-land中的重基/合并)。project fork
中的额外更改将不会合并回project base
实现这一目标的最佳方式是什么?以下是我的一些想法:
project fork
中使用South merges可使其与project base
中的最新更改保持同步。使用信号和任何其他必要手段,使新逻辑尽可能松散地耦合在project fork
中,以避免任何潜在冲突项目基础
模型,而是在引用旧模型的不同应用程序中创建新模型(即使用OneToOneField
)。额外的逻辑可能会出现在旧的和/或新的应用程序中项目库上的迁移
:
- 0001_项目_基础_一
- 0002\u项目\u基地\u二
- 0003\u项目\u基地\u三
项目fork上的迁移
:
- 0001_项目_基础_一
- 0002\u项目\u分叉\u一
- 0001_项目_基础_一
- 0002\u项目\u基地\u二
- 0002\u项目\u分叉\u一
- 0003\u项目\u基地\u三
- 0004\u项目\u分叉\u合并\u noop(添加到合并来自两个项目的更改中)
--merge
标志:
这显然不会在所有情况下都有效,但根据我的经验,它在大多数情况下都有效
陷阱:
- 对同一模型的多个更改仍可能中断
- 重复的改变会破坏事物