stt*_*ter 10 django merge rebase django-models django-south
我正在研究一个非常复杂的Django项目(50多个模型),它有一些复杂的逻辑(许多不同的工作流程,视图,信号,API,后台任务等).我们称之为project-base.目前正在使用Django 1.6 + South迁移和其他一些第三方应用程序.
现在,其中一个要求是创建一个这个项目的分支,它将在这里和那里添加一些字段/模型以及一些额外的逻辑.我们称之为project-fork.大多数额外的工作将在现有模型之上,但也会有一些新的.
随着project-base未来的发展,我们希望这些功能也能进入project-fork(就像git-land中的rebase/merge).额外的更改project-fork将不会合并回来project-base.
有什么可能是实现这一目标的最佳方式?以下是我的一些想法:
使用南合并在project-fork保持它最新的与最新变化project-base,为解释在这里.使用信号和任何其他必要手段来保持新逻辑project-fork尽可能松散耦合,以避免任何潜在的冲突.
不要修改任何原始project-base模型,而是在引用旧模型的不同应用程序中创建新模型(即使用OneToOneField).额外的逻辑可能会在旧的和/或新的应用程序中结束.
你的想法请:)
我会选择选项1,因为它看起来整体上并不复杂,但可能会带来更大的风险.以下是我将如何看待它:
迁移project-base:
迁移project-fork:
合并后,迁移将如下所示:
使用这种方法有任何陷阱吗?有没有更好的办法?
感谢您的时间.
南方的官方建议是试试--merge国旗:http://south.readthedocs.org/en/latest/tutorial/part5.html#team-workflow
这显然不适用于所有情况,根据我的经验,它最常见.
陷阱:
"更好"的方法通常是避免同时更改相同的模型,最简单的方法是尽可能减少错误窗口.
使用小叉子,模型的变化从一开始就很明显:
使用大叉子时,更改并不总是很明显和/或会再次发生变化:
| 归档时间: |
|
| 查看次数: |
157 次 |
| 最近记录: |