我有一个关于如何在团队中工作时使用Django-South的简短问题。
如果两个人同时在同一文件的更改中创建迁移文件,会发生什么?
例如,A和B正在使用相同的Django应用程序。他们在不同的分支中工作,并且都在迁移005.现在,A和B都修改了apple / models.py并使用startmigration创建了迁移文件。它们都在迁移006但是具有完全不同的迁移文件006.我想当它们合并它们的分支时,可能会有一些错误与南方。
是否有解决此冲突的解决方法?或者南方足够智能自己解决它?
答案 0 :(得分:18)
South的documentation谈到了这个问题:
团队和迁移的问题发生在不止一个人的情况下 在相同的时间段内进行迁移,它们都会被提交 没有其他的应用。这类似于两个人 同时在VCS中编辑同一个文件,就像南方的VCS一样 有办法解决问题。
如果发生这种情况,首先要注意的是南方将检测到 问题,并发出如下消息:
Inconsistent migration history The following options are available: --merge: will just attempt the migration ignoring any potential dependency conflicts.
如果您使用
--merge
重新运行迁移,则South只会应用。{ 无序错过的迁移。这通常有用,如 团队正在研究不同的模型;如果没有,你需要 查看实际的迁移更改并手动解决它们 他们可能会发生冲突。要注意的第二件事是,当你拉进别人的时候 模型更改完成自己的迁移,你需要做一个 新的空迁移,具有来自两个分支的更改 开发冻结(如果你使用mercurial,这相当于 合并提交)。为此,只需运行:
./manage.py schemamigration --empty appname merge_models
(请注意,
merge_models
只是一个迁移名称;请将其更改为 无论你喜欢什么)这里的重要信息是南方不能代替球队 协调 - 事实上,大多数功能都纯粹是为了警告 你没有协调,你提供简单的合并 只有那里容易的情况。确保您的团队知道谁在工作 什么,所以他们不会写影响相同部分的迁移 同时DB。